diff --git a/.gitignore b/.gitignore
index b449f17..980a469 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,18 +9,6 @@ pids
*.seed
*.pid.lock
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
# node-waf configuration
.lock-wscript
diff --git a/components.js b/components.js
index f5e1d9e..bd644ba 100644
--- a/components.js
+++ b/components.js
@@ -1,3 +1,15 @@
-import dtheader from "./components/dt-header";
+import * as frontMatter from "./components/d-front-matter";
+import * as title from "./components/d-title";
+import * as byline from "./components/d-byline";
+import * as article from "./components/d-article";
+import * as abstract from "./components/d-abstract";
+import * as toc from "./components/d-toc";
+import * as styles from "./components/styles";
-export {dtheader as dtheader};
\ No newline at end of file
+export {frontMatter as frontMatter};
+export {title as title};
+export {byline as byline};
+export {article as article};
+export {abstract as abstract};
+export {toc as toc};
+export {styles as styles};
\ No newline at end of file
diff --git a/components/d-abstract.js b/components/d-abstract.js
new file mode 100644
index 0000000..4c09c7b
--- /dev/null
+++ b/components/d-abstract.js
@@ -0,0 +1,17 @@
+import {Template} from "../mixins/template";
+
+const T = Template("d-abstract", `
+
+`, false);
+
+export default class Abstract extends T(HTMLElement) {
+ static get is() { return "d-abstract"; }
+}
+
+customElements.define(Abstract.is, Abstract);
diff --git a/components/d-appendix.js b/components/d-appendix.js
new file mode 100644
index 0000000..e69de29
diff --git a/components/d-article.js b/components/d-article.js
new file mode 100644
index 0000000..0664c13
--- /dev/null
+++ b/components/d-article.js
@@ -0,0 +1,235 @@
+import {Template} from "../mixins/template";
+
+const T = Template("d-article", `
+
+`, false);
+
+export default class Article extends T(HTMLElement) {
+ static get is() { return "d-article"; }
+}
+
+customElements.define(Article.is, Article);
\ No newline at end of file
diff --git a/components/d-byline.js b/components/d-byline.js
new file mode 100644
index 0000000..fd79762
--- /dev/null
+++ b/components/d-byline.js
@@ -0,0 +1,161 @@
+import mustache from "mustache";
+import {Template} from "../mixins/template";
+import {page} from "./layout";
+
+const T = Template("d-byline", `
+
+`, false);
+
+const mustacheTemplate = `
+
+
+ {{#authors}}
+
+ {{#personalURL}}
+
{{name}}
+ {{/personalURL}}
+ {{^personalURL}}
+
{{name}}
+ {{/personalURL}}
+ {{#affiliation}}
+ {{#affiliationURL}}
+
{{affiliation}}
+ {{/affiliationURL}}
+ {{^affiliationURL}}
+
{{affiliation}}
+ {{/affiliationURL}}
+ {{/affiliation}}
+
+ {{/authors}}
+
+
+
{{publishedMonth}}. {{publishedDay}}
+
{{publishedYear}}
+
+
+ Citation:
+ {{concatenatedAuthors}}, {{publishedYear}}
+
+
+`;
+
+export default class Byline extends T(HTMLElement) {
+ static get is() {
+ return "d-byline";
+ }
+ render(data) {
+ this.innerHTML = mustache.render(mustacheTemplate, data);
+ }
+}
+
+customElements.define(Byline.is, Byline);
+
diff --git a/components/d-front-matter.js b/components/d-front-matter.js
new file mode 100644
index 0000000..4c29574
--- /dev/null
+++ b/components/d-front-matter.js
@@ -0,0 +1,48 @@
+import ymlParse from "js-yaml";
+
+export default class FrontMatter extends HTMLElement {
+ static get is() { return "d-front-matter"; }
+ constructor() {
+ super();
+ this.data = {};
+ }
+ connectedCallback() {
+ let el = this.querySelector("script");
+ if (el) {
+ let text = el.textContent;
+ this.parse(ymlParse.safeLoad(text));
+ }
+ }
+ parse(localData) {
+ this.data.title = localData.title ? localData.title : "Untitled";
+ this.data.description = localData.description ? localData.description : "No description.";
+
+ this.data.authors = localData.authors ? localData.authors : [];
+
+ this.data.authors = this.data.authors.map((author, i) =>{
+ let a = {};
+ let name = Object.keys(author)[0];
+ if ((typeof author) === "string") {
+ name = author;
+ } else {
+ a.personalURL = author[name];
+ }
+ let names = name.split(" ");
+ a.name = name;
+ a.firstName = names.slice(0, names.length - 1).join(" ");
+ a.lastName = names[names.length -1];
+ if(localData.affiliations[i]) {
+ let affiliation = Object.keys(localData.affiliations[i])[0];
+ if ((typeof localData.affiliations[i]) === "string") {
+ affiliation = localData.affiliations[i]
+ } else {
+ a.affiliationURL = localData.affiliations[i][affiliation];
+ }
+ a.affiliation = affiliation;
+ }
+ return a;
+ });
+ }
+}
+
+customElements.define(FrontMatter.is, FrontMatter);
\ No newline at end of file
diff --git a/components/d-title.js b/components/d-title.js
new file mode 100644
index 0000000..baa7638
--- /dev/null
+++ b/components/d-title.js
@@ -0,0 +1,36 @@
+import {Template} from "../mixins/template";
+import {body} from "./layout";
+
+const T = Template("d-title", `
+
+`, false);
+
+export default class Title extends T(HTMLElement) {
+ static get is() { return "d-title"; }
+ connectedCallback() {
+ super.connectedCallback();
+ this.byline = document.createElement("d-byline");
+ let frontMatter = document.querySelector("d-front-matter");
+ this.byline.render(frontMatter.data);
+ this.appendChild(this.byline);
+ }
+}
+
+customElements.define(Title.is, Title);
diff --git a/components/d-toc.js b/components/d-toc.js
new file mode 100644
index 0000000..3340f1d
--- /dev/null
+++ b/components/d-toc.js
@@ -0,0 +1,17 @@
+import {Template} from "../mixins/template";
+
+const T = Template("d-toc", `
+
+`, false);
+
+export default class Toc extends T(HTMLElement) {
+ static get is() {
+ return "d-toc";
+ }
+}
+
+customElements.define(Toc.is, Toc);
\ No newline at end of file
diff --git a/components/layout.js b/components/layout.js
new file mode 100644
index 0000000..eb25978
--- /dev/null
+++ b/components/layout.js
@@ -0,0 +1,68 @@
+
+export function body(selector) {
+ return `${selector} {
+ width: auto;
+ margin-left: 24px;
+ margin-right: 24px;
+ box-sizing: border-box;
+ }
+ @media(min-width: 768px) {
+ ${selector} {
+ margin-left: 72px;
+ margin-right: 72px;
+ }
+ }
+ @media(min-width: 1080px) {
+ ${selector} {
+ margin-left: calc(50% - 984px / 2);
+ width: 648px;
+ }
+ }
+ `;
+}
+
+export function page(selector) {
+ return `${selector} {
+ width: auto;
+ margin-left: 24px;
+ margin-right: 24px;
+ box-sizing: border-box;
+ }
+ @media(min-width: 768px) {
+ ${selector} {
+ margin-left: 72px;
+ margin-right: 72px;
+ }
+ }
+ @media(min-width: 1080px) {
+ ${selector} {
+ width: 984px;
+ margin-left: auto;
+ margin-right: auto;
+ }
+ }
+ `;
+}
+
+export function screen(selector) {
+ return `${selector} {
+ width: auto;
+ margin-left: 24px;
+ margin-right: 24px;
+ box-sizing: border-box;
+ }
+ @media(min-width: 768px) {
+ ${selector} {
+ margin-left: 72px;
+ margin-right: 72px;
+ }
+ }
+ @media(min-width: 1080px) {
+ ${selector} {
+ margin-left: auto;
+ margin-right: auto;
+ width: auto;
+ }
+ }
+ `;
+}
\ No newline at end of file
diff --git a/components/styles-article.css b/components/styles-article.css
new file mode 100644
index 0000000..e69de29
diff --git a/components/styles-base.css b/components/styles-base.css
new file mode 100644
index 0000000..5d36642
--- /dev/null
+++ b/components/styles-base.css
@@ -0,0 +1,65 @@
+html {
+ font-size: 20px;
+ line-height: 1rem;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+ text-size-adjust: 100%;
+}
+
+body {
+ margin: 0;
+ /*background-color: hsl(223, 9%, 25%);*/
+}
+
+a {
+ color: #004276;
+}
+
+figure {
+ margin: 0;
+}
+
+/*
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}*/
diff --git a/components/styles-code.css b/components/styles-code.css
new file mode 100644
index 0000000..64d0168
--- /dev/null
+++ b/components/styles-code.css
@@ -0,0 +1,147 @@
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+
+code {
+ white-space: nowrap;
+ background: rgba(0, 0, 0, 0.04);
+ border-radius: 2px;
+ padding: 4px 7px;
+ font-size: 15px;
+ color: rgba(0, 0, 0, 0.6);
+}
+
+pre code {
+ display: block;
+ background: white;
+ border-left: 3px solid rgba(0, 0, 0, 0.05);
+ padding: 0 0 0 24px;
+}
+
+
+code[class*="language-"],
+pre[class*="language-"] {
+ text-shadow: 0 1px white;
+ 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;
+}
+
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+
+@media print {
+ code[class*="language-"],
+ pre[class*="language-"] {
+ text-shadow: none;
+ }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+ overflow: auto;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+ white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: slategray;
+}
+
+.token.punctuation {
+ color: #999;
+}
+
+.namespace {
+ opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+ color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+ color: #a67f59;
+ background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+ color: #07a;
+}
+
+.token.function {
+ color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+ color: #e90;
+}
+
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+.token.italic {
+ font-style: italic;
+}
+
+.token.entity {
+ cursor: help;
+}
diff --git a/components/styles-layout.css b/components/styles-layout.css
new file mode 100644
index 0000000..0c5e106
--- /dev/null
+++ b/components/styles-layout.css
@@ -0,0 +1,227 @@
+/*
+ Column: 60px
+ Gutter: 24px
+
+ Body: 648px
+ - 8 columns
+ - 7 gutters
+ Middle: 816px
+ Page: 984px
+ - 12 columns
+ - 11 gutters
+*/
+
+.l-body,
+.l-body-outset,
+.l-page,
+.l-page-outset,
+.l-middle,
+.l-middle-outset,
+d-article > div,
+d-article > p,
+d-article > h1,
+d-article > h2,
+d-article > h3,
+d-article > h4,
+d-article > figure,
+d-article > ul,
+d-article > d-abstract,
+d-article > d-code,
+d-article section > div,
+d-article section > p,
+d-article section > h1,
+d-article section > h2,
+d-article section > h3,
+d-article section > h4,
+d-article section > figure,
+d-article section > ul,
+d-article section > d-abstract,
+d-article section > d-code {
+ width: auto;
+ margin-left: 24px;
+ margin-right: 24px;
+ box-sizing: border-box;
+}
+
+@media(min-width: 768px) {
+ .l-body,
+ .l-body-outset,
+ .l-page,
+ .l-page-outset,
+ .l-middle,
+ .l-middle-outset,
+ d-article > div,
+ d-article > p,
+ d-article > h1,
+ d-article > h2,
+ d-article > h3,
+ d-article > h4,
+ d-article > figure,
+ d-article > ul,
+ d-article > d-abstract,
+ d-article > d-code,
+ d-article section > div,
+ d-article section > p,
+ d-article section > h1,
+ d-article section > h2,
+ d-article section > h3,
+ d-article section > h4,
+ d-article section > figure,
+ d-article section > ul,
+ d-article section > d-abstract,
+ d-article section > d-code {
+ margin-left: 72px;
+ margin-right: 72px;
+ }
+}
+
+@media(min-width: 1080px) {
+ .l-body,
+ d-article > div,
+ d-article > p,
+ d-article > h2,
+ d-article > h3,
+ d-article > h4,
+ d-article > figure,
+ d-article > ul,
+ d-article > d-abstract,
+ d-article > d-code,
+ d-article section > div,
+ d-article section > p,
+ d-article section > h2,
+ d-article section > h3,
+ d-article section > h4,
+ d-article section > figure,
+ d-article section > ul,
+ d-article section > d-abstract,
+ d-article section > d-code {
+ margin-left: calc(50% - 984px / 2);
+ width: 648px;
+ }
+ .l-body-outset,
+ d-article .l-body-outset {
+ margin-left: calc(50% - 984px / 2 - 96px/2);
+ width: calc(648px + 96px);
+ }
+ .l-middle,
+ d-article .l-middle {
+ width: 816px;
+ margin-left: calc(50% - 984px / 2);
+ margin-right: auto;
+ }
+ .l-middle-outset,
+ d-article .l-middle-outset {
+ width: calc(816px + 96px);
+ margin-left: calc(50% - 984px / 2 - 48px);
+ margin-right: auto;
+ }
+ d-article > h1,
+ d-article section > h1,
+ .l-page,
+ d-article .l-page,
+ d-article.centered .l-page {
+ width: 984px;
+ margin-left: auto;
+ margin-right: auto;
+ }
+ .l-page-outset,
+ d-article .l-page-outset,
+ d-article.centered .l-page-outset {
+ width: 1080px;
+ margin-left: auto;
+ margin-right: auto;
+ }
+ .l-screen,
+ d-article .l-screen,
+ d-article.centered .l-screen {
+ margin-left: auto;
+ margin-right: auto;
+ width: auto;
+ }
+ .l-screen-inset,
+ d-article .l-screen-inset,
+ d-article.centered .l-screen-inset {
+ margin-left: 24px;
+ margin-right: 24px;
+ width: auto;
+ }
+ .l-gutter,
+ d-article .l-gutter {
+ clear: both;
+ float: right;
+ margin-top: 0;
+ margin-left: 24px;
+ margin-right: calc((100vw - 984px) / 2 + 168px);
+ width: calc((984px - 648px) / 2 - 24px);
+ }
+
+ /* Side */
+ .side.l-body,
+ d-article .side.l-body {
+ clear: both;
+ float: right;
+ margin-top: 0;
+ margin-left: 48px;
+ margin-right: calc((100vw - 984px + 648px) / 2);
+ width: calc(648px / 2 - 24px - 84px);
+ }
+ .side.l-body-outset,
+ d-article .side.l-body-outset {
+ clear: both;
+ float: right;
+ margin-top: 0;
+ margin-left: 48px;
+ margin-right: calc((100vw - 984px + 648px - 48px) / 2);
+ width: calc(648px / 2 - 48px + 24px);
+ }
+ .side.l-middle,
+ d-article .side.l-middle {
+ clear: both;
+ float: right;
+ width: calc(456px - 84px);
+ margin-left: 48px;
+ margin-right: calc((100vw - 984px) / 2 + 168px);
+ }
+ .side.l-middle-outset,
+ d-article .side.l-middle-outset {
+ clear: both;
+ float: right;
+ width: 456px;
+ margin-left: 48px;
+ margin-right: calc((100vw - 984px) / 2 + 168px);
+ }
+ .side.l-page,
+ d-article .side.l-page {
+ clear: both;
+ float: right;
+ margin-left: 48px;
+ width: calc(624px - 84px);
+ margin-right: calc((100vw - 984px) / 2);
+ }
+ .side.l-page-outset,
+ d-article .side.l-page-outset {
+ clear: both;
+ float: right;
+ width: 624px;
+ margin-right: calc((100vw - 984px) / 2);
+ }
+}
+
+
+/* Rows and Columns */
+
+.row {
+ display: flex;
+}
+.column {
+ flex: 1;
+ box-sizing: border-box;
+ margin-right: 24px;
+ margin-left: 24px;
+}
+.row > .column:first-of-type {
+ margin-left: 0;
+}
+.row > .column:last-of-type {
+ margin-right: 0;
+}
diff --git a/components/styles-print.css b/components/styles-print.css
new file mode 100644
index 0000000..4c5a5d9
--- /dev/null
+++ b/components/styles-print.css
@@ -0,0 +1,20 @@
+
+@media print {
+ @page {
+ size: 8in 11in;
+ }
+ html {
+ }
+ p, code {
+ page-break-inside: avoid;
+ }
+ h2, h3 {
+ page-break-after: avoid;
+ }
+ d-header {
+ visibility: hidden;
+ }
+ d-footer {
+ display: none!important;
+ }
+}
diff --git a/components/styles.js b/components/styles.js
new file mode 100644
index 0000000..c7b0486
--- /dev/null
+++ b/components/styles.js
@@ -0,0 +1,10 @@
+import base from "./styles-base.css";
+import layout from "./styles-layout.css";
+import article from "./styles-article.css";
+import code from "./styles-code.css";
+import print from "./styles-print.css";
+
+let s = document.createElement("style");
+s.textContent = base + layout + code + print;
+document.querySelector("head").appendChild(s);
+export default s;
\ No newline at end of file
diff --git a/dist/components.js b/dist/components.js
new file mode 100644
index 0000000..b83e9a4
--- /dev/null
+++ b/dist/components.js
@@ -0,0 +1,5062 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (factory((global.dl = global.dl || {})));
+}(this, (function (exports) { 'use strict';
+
+function isNothing(subject) {
+ return (typeof subject === 'undefined') || (subject === null);
+}
+
+
+function isObject(subject) {
+ return (typeof subject === 'object') && (subject !== null);
+}
+
+
+function toArray(sequence) {
+ if (Array.isArray(sequence)) { return sequence; }
+ else if (isNothing(sequence)) { return []; }
+
+ return [ sequence ];
+}
+
+
+function extend(target, source) {
+ var index, length, key, sourceKeys;
+
+ if (source) {
+ sourceKeys = Object.keys(source);
+
+ for (index = 0, length = sourceKeys.length; index < length; index += 1) {
+ key = sourceKeys[index];
+ target[key] = source[key];
+ }
+ }
+
+ return target;
+}
+
+
+function repeat(string, count) {
+ var result = '', cycle;
+
+ for (cycle = 0; cycle < count; cycle += 1) {
+ result += string;
+ }
+
+ return result;
+}
+
+
+function isNegativeZero(number) {
+ return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);
+}
+
+
+var isNothing_1 = isNothing;
+var isObject_1 = isObject;
+var toArray_1 = toArray;
+var repeat_1 = repeat;
+var isNegativeZero_1 = isNegativeZero;
+var extend_1 = extend;
+
+var common$1 = {
+ isNothing: isNothing_1,
+ isObject: isObject_1,
+ toArray: toArray_1,
+ repeat: repeat_1,
+ isNegativeZero: isNegativeZero_1,
+ extend: extend_1
+};
+
+// YAML error class. http://stackoverflow.com/questions/8458984
+//
+function YAMLException$2(reason, mark) {
+ // Super constructor
+ Error.call(this);
+
+ // Include stack trace in error object
+ if (Error.captureStackTrace) {
+ // Chrome and NodeJS
+ Error.captureStackTrace(this, this.constructor);
+ } else {
+ // FF, IE 10+ and Safari 6+. Fallback for others
+ this.stack = (new Error()).stack || '';
+ }
+
+ this.name = 'YAMLException';
+ this.reason = reason;
+ this.mark = mark;
+ this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');
+}
+
+
+// Inherit from Error
+YAMLException$2.prototype = Object.create(Error.prototype);
+YAMLException$2.prototype.constructor = YAMLException$2;
+
+
+YAMLException$2.prototype.toString = function toString(compact) {
+ var result = this.name + ': ';
+
+ result += this.reason || '(unknown reason)';
+
+ if (!compact && this.mark) {
+ result += ' ' + this.mark.toString();
+ }
+
+ return result;
+};
+
+
+var exception = YAMLException$2;
+
+var common$3 = common$1;
+
+
+function Mark$1(name, buffer, position, line, column) {
+ this.name = name;
+ this.buffer = buffer;
+ this.position = position;
+ this.line = line;
+ this.column = column;
+}
+
+
+Mark$1.prototype.getSnippet = function getSnippet(indent, maxLength) {
+ var this$1 = this;
+
+ var head, start, tail, end, snippet;
+
+ if (!this.buffer) { return null; }
+
+ indent = indent || 4;
+ maxLength = maxLength || 75;
+
+ head = '';
+ start = this.position;
+
+ while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {
+ start -= 1;
+ if (this$1.position - start > (maxLength / 2 - 1)) {
+ head = ' ... ';
+ start += 5;
+ break;
+ }
+ }
+
+ tail = '';
+ end = this.position;
+
+ while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) {
+ end += 1;
+ if (end - this$1.position > (maxLength / 2 - 1)) {
+ tail = ' ... ';
+ end -= 5;
+ break;
+ }
+ }
+
+ snippet = this.buffer.slice(start, end);
+
+ return common$3.repeat(' ', indent) + head + snippet + tail + '\n' +
+ common$3.repeat(' ', indent + this.position - start + head.length) + '^';
+};
+
+
+Mark$1.prototype.toString = function toString(compact) {
+ var snippet, where = '';
+
+ if (this.name) {
+ where += 'in "' + this.name + '" ';
+ }
+
+ where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);
+
+ if (!compact) {
+ snippet = this.getSnippet();
+
+ if (snippet) {
+ where += ':\n' + snippet;
+ }
+ }
+
+ return where;
+};
+
+
+var mark = Mark$1;
+
+var YAMLException$4 = exception;
+
+var TYPE_CONSTRUCTOR_OPTIONS = [
+ 'kind',
+ 'resolve',
+ 'construct',
+ 'instanceOf',
+ 'predicate',
+ 'represent',
+ 'defaultStyle',
+ 'styleAliases'
+];
+
+var YAML_NODE_KINDS = [
+ 'scalar',
+ 'sequence',
+ 'mapping'
+];
+
+function compileStyleAliases(map) {
+ var result = {};
+
+ if (map !== null) {
+ Object.keys(map).forEach(function (style) {
+ map[style].forEach(function (alias) {
+ result[String(alias)] = style;
+ });
+ });
+ }
+
+ return result;
+}
+
+function Type$2(tag, options) {
+ options = options || {};
+
+ Object.keys(options).forEach(function (name) {
+ if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {
+ throw new YAMLException$4('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.');
+ }
+ });
+
+ // TODO: Add tag format check.
+ this.tag = tag;
+ this.kind = options['kind'] || null;
+ this.resolve = options['resolve'] || function () { return true; };
+ this.construct = options['construct'] || function (data) { return data; };
+ this.instanceOf = options['instanceOf'] || null;
+ this.predicate = options['predicate'] || null;
+ this.represent = options['represent'] || null;
+ this.defaultStyle = options['defaultStyle'] || null;
+ this.styleAliases = compileStyleAliases(options['styleAliases'] || null);
+
+ if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {
+ throw new YAMLException$4('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.');
+ }
+}
+
+var type = Type$2;
+
+var common$4 = common$1;
+var YAMLException$3 = exception;
+var Type$1 = type;
+
+
+function compileList(schema, name, result) {
+ var exclude = [];
+
+ schema.include.forEach(function (includedSchema) {
+ result = compileList(includedSchema, name, result);
+ });
+
+ schema[name].forEach(function (currentType) {
+ result.forEach(function (previousType, previousIndex) {
+ if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {
+ exclude.push(previousIndex);
+ }
+ });
+
+ result.push(currentType);
+ });
+
+ return result.filter(function (type$$1, index) {
+ return exclude.indexOf(index) === -1;
+ });
+}
+
+
+function compileMap(/* lists... */) {
+ var arguments$1 = arguments;
+
+ var result = {
+ scalar: {},
+ sequence: {},
+ mapping: {},
+ fallback: {}
+ }, index, length;
+
+ function collectType(type$$1) {
+ result[type$$1.kind][type$$1.tag] = result['fallback'][type$$1.tag] = type$$1;
+ }
+
+ for (index = 0, length = arguments.length; index < length; index += 1) {
+ arguments$1[index].forEach(collectType);
+ }
+ return result;
+}
+
+
+function Schema$2(definition) {
+ this.include = definition.include || [];
+ this.implicit = definition.implicit || [];
+ this.explicit = definition.explicit || [];
+
+ this.implicit.forEach(function (type$$1) {
+ if (type$$1.loadKind && type$$1.loadKind !== 'scalar') {
+ throw new YAMLException$3('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');
+ }
+ });
+
+ this.compiledImplicit = compileList(this, 'implicit', []);
+ this.compiledExplicit = compileList(this, 'explicit', []);
+ this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);
+}
+
+
+Schema$2.DEFAULT = null;
+
+
+Schema$2.create = function createSchema() {
+ var schemas, types;
+
+ switch (arguments.length) {
+ case 1:
+ schemas = Schema$2.DEFAULT;
+ types = arguments[0];
+ break;
+
+ case 2:
+ schemas = arguments[0];
+ types = arguments[1];
+ break;
+
+ default:
+ throw new YAMLException$3('Wrong number of arguments for Schema.create function');
+ }
+
+ schemas = common$4.toArray(schemas);
+ types = common$4.toArray(types);
+
+ if (!schemas.every(function (schema) { return schema instanceof Schema$2; })) {
+ throw new YAMLException$3('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');
+ }
+
+ if (!types.every(function (type$$1) { return type$$1 instanceof Type$1; })) {
+ throw new YAMLException$3('Specified list of YAML types (or a single Type object) contains a non-Type object.');
+ }
+
+ return new Schema$2({
+ include: schemas,
+ explicit: types
+ });
+};
+
+
+var schema = Schema$2;
+
+var Type$3 = type;
+
+var str = new Type$3('tag:yaml.org,2002:str', {
+ kind: 'scalar',
+ construct: function (data) { return data !== null ? data : ''; }
+});
+
+var Type$4 = type;
+
+var seq = new Type$4('tag:yaml.org,2002:seq', {
+ kind: 'sequence',
+ construct: function (data) { return data !== null ? data : []; }
+});
+
+var Type$5 = type;
+
+var map = new Type$5('tag:yaml.org,2002:map', {
+ kind: 'mapping',
+ construct: function (data) { return data !== null ? data : {}; }
+});
+
+var Schema$5 = schema;
+
+
+var failsafe = new Schema$5({
+ explicit: [
+ str,
+ seq,
+ map
+ ]
+});
+
+var Type$6 = type;
+
+function resolveYamlNull(data) {
+ if (data === null) { return true; }
+
+ var max = data.length;
+
+ return (max === 1 && data === '~') ||
+ (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));
+}
+
+function constructYamlNull() {
+ return null;
+}
+
+function isNull(object) {
+ return object === null;
+}
+
+var _null = new Type$6('tag:yaml.org,2002:null', {
+ kind: 'scalar',
+ resolve: resolveYamlNull,
+ construct: constructYamlNull,
+ predicate: isNull,
+ represent: {
+ canonical: function () { return '~'; },
+ lowercase: function () { return 'null'; },
+ uppercase: function () { return 'NULL'; },
+ camelcase: function () { return 'Null'; }
+ },
+ defaultStyle: 'lowercase'
+});
+
+var Type$7 = type;
+
+function resolveYamlBoolean(data) {
+ if (data === null) { return false; }
+
+ var max = data.length;
+
+ return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||
+ (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));
+}
+
+function constructYamlBoolean(data) {
+ return data === 'true' ||
+ data === 'True' ||
+ data === 'TRUE';
+}
+
+function isBoolean(object) {
+ return Object.prototype.toString.call(object) === '[object Boolean]';
+}
+
+var bool = new Type$7('tag:yaml.org,2002:bool', {
+ kind: 'scalar',
+ resolve: resolveYamlBoolean,
+ construct: constructYamlBoolean,
+ predicate: isBoolean,
+ represent: {
+ lowercase: function (object) { return object ? 'true' : 'false'; },
+ uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },
+ camelcase: function (object) { return object ? 'True' : 'False'; }
+ },
+ defaultStyle: 'lowercase'
+});
+
+var common$5 = common$1;
+var Type$8 = type;
+
+function isHexCode(c) {
+ return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||
+ ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||
+ ((0x61/* a */ <= c) && (c <= 0x66/* f */));
+}
+
+function isOctCode(c) {
+ return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));
+}
+
+function isDecCode(c) {
+ return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));
+}
+
+function resolveYamlInteger(data) {
+ if (data === null) { return false; }
+
+ var max = data.length,
+ index = 0,
+ hasDigits = false,
+ ch;
+
+ if (!max) { return false; }
+
+ ch = data[index];
+
+ // sign
+ if (ch === '-' || ch === '+') {
+ ch = data[++index];
+ }
+
+ if (ch === '0') {
+ // 0
+ if (index + 1 === max) { return true; }
+ ch = data[++index];
+
+ // base 2, base 8, base 16
+
+ if (ch === 'b') {
+ // base 2
+ index++;
+
+ for (; index < max; index++) {
+ ch = data[index];
+ if (ch === '_') { continue; }
+ if (ch !== '0' && ch !== '1') { return false; }
+ hasDigits = true;
+ }
+ return hasDigits;
+ }
+
+
+ if (ch === 'x') {
+ // base 16
+ index++;
+
+ for (; index < max; index++) {
+ ch = data[index];
+ if (ch === '_') { continue; }
+ if (!isHexCode(data.charCodeAt(index))) { return false; }
+ hasDigits = true;
+ }
+ return hasDigits;
+ }
+
+ // base 8
+ for (; index < max; index++) {
+ ch = data[index];
+ if (ch === '_') { continue; }
+ if (!isOctCode(data.charCodeAt(index))) { return false; }
+ hasDigits = true;
+ }
+ return hasDigits;
+ }
+
+ // base 10 (except 0) or base 60
+
+ for (; index < max; index++) {
+ ch = data[index];
+ if (ch === '_') { continue; }
+ if (ch === ':') { break; }
+ if (!isDecCode(data.charCodeAt(index))) {
+ return false;
+ }
+ hasDigits = true;
+ }
+
+ if (!hasDigits) { return false; }
+
+ // if !base60 - done;
+ if (ch !== ':') { return true; }
+
+ // base60 almost not used, no needs to optimize
+ return /^(:[0-5]?[0-9])+$/.test(data.slice(index));
+}
+
+function constructYamlInteger(data) {
+ var value = data, sign = 1, ch, base, digits = [];
+
+ if (value.indexOf('_') !== -1) {
+ value = value.replace(/_/g, '');
+ }
+
+ ch = value[0];
+
+ if (ch === '-' || ch === '+') {
+ if (ch === '-') { sign = -1; }
+ value = value.slice(1);
+ ch = value[0];
+ }
+
+ if (value === '0') { return 0; }
+
+ if (ch === '0') {
+ if (value[1] === 'b') { return sign * parseInt(value.slice(2), 2); }
+ if (value[1] === 'x') { return sign * parseInt(value, 16); }
+ return sign * parseInt(value, 8);
+ }
+
+ if (value.indexOf(':') !== -1) {
+ value.split(':').forEach(function (v) {
+ digits.unshift(parseInt(v, 10));
+ });
+
+ value = 0;
+ base = 1;
+
+ digits.forEach(function (d) {
+ value += (d * base);
+ base *= 60;
+ });
+
+ return sign * value;
+
+ }
+
+ return sign * parseInt(value, 10);
+}
+
+function isInteger(object) {
+ return (Object.prototype.toString.call(object)) === '[object Number]' &&
+ (object % 1 === 0 && !common$5.isNegativeZero(object));
+}
+
+var int_1 = new Type$8('tag:yaml.org,2002:int', {
+ kind: 'scalar',
+ resolve: resolveYamlInteger,
+ construct: constructYamlInteger,
+ predicate: isInteger,
+ represent: {
+ binary: function (object) { return '0b' + object.toString(2); },
+ octal: function (object) { return '0' + object.toString(8); },
+ decimal: function (object) { return object.toString(10); },
+ hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }
+ },
+ defaultStyle: 'decimal',
+ styleAliases: {
+ binary: [ 2, 'bin' ],
+ octal: [ 8, 'oct' ],
+ decimal: [ 10, 'dec' ],
+ hexadecimal: [ 16, 'hex' ]
+ }
+});
+
+var common$6 = common$1;
+var Type$9 = type;
+
+var YAML_FLOAT_PATTERN = new RegExp(
+ '^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?' +
+ '|\\.[0-9_]+(?:[eE][-+][0-9]+)?' +
+ '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' +
+ '|[-+]?\\.(?:inf|Inf|INF)' +
+ '|\\.(?:nan|NaN|NAN))$');
+
+function resolveYamlFloat(data) {
+ if (data === null) { return false; }
+
+ if (!YAML_FLOAT_PATTERN.test(data)) { return false; }
+
+ return true;
+}
+
+function constructYamlFloat(data) {
+ var value, sign, base, digits;
+
+ value = data.replace(/_/g, '').toLowerCase();
+ sign = value[0] === '-' ? -1 : 1;
+ digits = [];
+
+ if ('+-'.indexOf(value[0]) >= 0) {
+ value = value.slice(1);
+ }
+
+ if (value === '.inf') {
+ return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
+
+ } else if (value === '.nan') {
+ return NaN;
+
+ } else if (value.indexOf(':') >= 0) {
+ value.split(':').forEach(function (v) {
+ digits.unshift(parseFloat(v, 10));
+ });
+
+ value = 0.0;
+ base = 1;
+
+ digits.forEach(function (d) {
+ value += d * base;
+ base *= 60;
+ });
+
+ return sign * value;
+
+ }
+ return sign * parseFloat(value, 10);
+}
+
+
+var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;
+
+function representYamlFloat(object, style) {
+ var res;
+
+ if (isNaN(object)) {
+ switch (style) {
+ case 'lowercase': return '.nan';
+ case 'uppercase': return '.NAN';
+ case 'camelcase': return '.NaN';
+ }
+ } else if (Number.POSITIVE_INFINITY === object) {
+ switch (style) {
+ case 'lowercase': return '.inf';
+ case 'uppercase': return '.INF';
+ case 'camelcase': return '.Inf';
+ }
+ } else if (Number.NEGATIVE_INFINITY === object) {
+ switch (style) {
+ case 'lowercase': return '-.inf';
+ case 'uppercase': return '-.INF';
+ case 'camelcase': return '-.Inf';
+ }
+ } else if (common$6.isNegativeZero(object)) {
+ return '-0.0';
+ }
+
+ res = object.toString(10);
+
+ // JS stringifier can build scientific format without dots: 5e-100,
+ // while YAML requres dot: 5.e-100. Fix it with simple hack
+
+ return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;
+}
+
+function isFloat(object) {
+ return (Object.prototype.toString.call(object) === '[object Number]') &&
+ (object % 1 !== 0 || common$6.isNegativeZero(object));
+}
+
+var float_1 = new Type$9('tag:yaml.org,2002:float', {
+ kind: 'scalar',
+ resolve: resolveYamlFloat,
+ construct: constructYamlFloat,
+ predicate: isFloat,
+ represent: representYamlFloat,
+ defaultStyle: 'lowercase'
+});
+
+var Schema$4 = schema;
+
+
+var json = new Schema$4({
+ include: [
+ failsafe
+ ],
+ implicit: [
+ _null,
+ bool,
+ int_1,
+ float_1
+ ]
+});
+
+var Schema$3 = schema;
+
+
+var core = new Schema$3({
+ include: [
+ json
+ ]
+});
+
+var Type$10 = type;
+
+var YAML_DATE_REGEXP = new RegExp(
+ '^([0-9][0-9][0-9][0-9])' + // [1] year
+ '-([0-9][0-9])' + // [2] month
+ '-([0-9][0-9])$'); // [3] day
+
+var YAML_TIMESTAMP_REGEXP = new RegExp(
+ '^([0-9][0-9][0-9][0-9])' + // [1] year
+ '-([0-9][0-9]?)' + // [2] month
+ '-([0-9][0-9]?)' + // [3] day
+ '(?:[Tt]|[ \\t]+)' + // ...
+ '([0-9][0-9]?)' + // [4] hour
+ ':([0-9][0-9])' + // [5] minute
+ ':([0-9][0-9])' + // [6] second
+ '(?:\\.([0-9]*))?' + // [7] fraction
+ '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour
+ '(?::([0-9][0-9]))?))?$'); // [11] tz_minute
+
+function resolveYamlTimestamp(data) {
+ if (data === null) { return false; }
+ if (YAML_DATE_REGEXP.exec(data) !== null) { return true; }
+ if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) { return true; }
+ return false;
+}
+
+function constructYamlTimestamp(data) {
+ var match, year, month, day, hour, minute, second, fraction = 0,
+ delta = null, tz_hour, tz_minute, date;
+
+ match = YAML_DATE_REGEXP.exec(data);
+ if (match === null) { match = YAML_TIMESTAMP_REGEXP.exec(data); }
+
+ if (match === null) { throw new Error('Date resolve error'); }
+
+ // match: [1] year [2] month [3] day
+
+ year = +(match[1]);
+ month = +(match[2]) - 1; // JS month starts with 0
+ day = +(match[3]);
+
+ if (!match[4]) { // no hour
+ return new Date(Date.UTC(year, month, day));
+ }
+
+ // match: [4] hour [5] minute [6] second [7] fraction
+
+ hour = +(match[4]);
+ minute = +(match[5]);
+ second = +(match[6]);
+
+ if (match[7]) {
+ fraction = match[7].slice(0, 3);
+ while (fraction.length < 3) { // milli-seconds
+ fraction += '0';
+ }
+ fraction = +fraction;
+ }
+
+ // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute
+
+ if (match[9]) {
+ tz_hour = +(match[10]);
+ tz_minute = +(match[11] || 0);
+ delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds
+ if (match[9] === '-') { delta = -delta; }
+ }
+
+ date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));
+
+ if (delta) { date.setTime(date.getTime() - delta); }
+
+ return date;
+}
+
+function representYamlTimestamp(object /*, style*/) {
+ return object.toISOString();
+}
+
+var timestamp = new Type$10('tag:yaml.org,2002:timestamp', {
+ kind: 'scalar',
+ resolve: resolveYamlTimestamp,
+ construct: constructYamlTimestamp,
+ instanceOf: Date,
+ represent: representYamlTimestamp
+});
+
+var Type$11 = type;
+
+function resolveYamlMerge(data) {
+ return data === '<<' || data === null;
+}
+
+var merge = new Type$11('tag:yaml.org,2002:merge', {
+ kind: 'scalar',
+ resolve: resolveYamlMerge
+});
+
+var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
+
+function commonjsRequire () {
+ throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');
+}
+
+
+
+function createCommonjsModule(fn, module) {
+ return module = { exports: {} }, fn(module, module.exports), module.exports;
+}
+
+var NodeBuffer;
+
+try {
+ // A trick for browserified version, to not include `Buffer` shim
+ var _require = commonjsRequire;
+ NodeBuffer = _require('buffer').Buffer;
+} catch (__) {}
+
+var Type$12 = type;
+
+
+// [ 64, 65, 66 ] -> [ padding, CR, LF ]
+var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r';
+
+
+function resolveYamlBinary(data) {
+ if (data === null) { return false; }
+
+ var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;
+
+ // Convert one by one.
+ for (idx = 0; idx < max; idx++) {
+ code = map.indexOf(data.charAt(idx));
+
+ // Skip CR/LF
+ if (code > 64) { continue; }
+
+ // Fail on illegal characters
+ if (code < 0) { return false; }
+
+ bitlen += 6;
+ }
+
+ // If there are any bits left, source was corrupted
+ return (bitlen % 8) === 0;
+}
+
+function constructYamlBinary(data) {
+ var idx, tailbits,
+ input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan
+ max = input.length,
+ map = BASE64_MAP,
+ bits = 0,
+ result = [];
+
+ // Collect by 6*4 bits (3 bytes)
+
+ for (idx = 0; idx < max; idx++) {
+ if ((idx % 4 === 0) && idx) {
+ result.push((bits >> 16) & 0xFF);
+ result.push((bits >> 8) & 0xFF);
+ result.push(bits & 0xFF);
+ }
+
+ bits = (bits << 6) | map.indexOf(input.charAt(idx));
+ }
+
+ // Dump tail
+
+ tailbits = (max % 4) * 6;
+
+ if (tailbits === 0) {
+ result.push((bits >> 16) & 0xFF);
+ result.push((bits >> 8) & 0xFF);
+ result.push(bits & 0xFF);
+ } else if (tailbits === 18) {
+ result.push((bits >> 10) & 0xFF);
+ result.push((bits >> 2) & 0xFF);
+ } else if (tailbits === 12) {
+ result.push((bits >> 4) & 0xFF);
+ }
+
+ // Wrap into Buffer for NodeJS and leave Array for browser
+ if (NodeBuffer) { return new NodeBuffer(result); }
+
+ return result;
+}
+
+function representYamlBinary(object /*, style*/) {
+ var result = '', bits = 0, idx, tail,
+ max = object.length,
+ map = BASE64_MAP;
+
+ // Convert every three bytes to 4 ASCII characters.
+
+ for (idx = 0; idx < max; idx++) {
+ if ((idx % 3 === 0) && idx) {
+ result += map[(bits >> 18) & 0x3F];
+ result += map[(bits >> 12) & 0x3F];
+ result += map[(bits >> 6) & 0x3F];
+ result += map[bits & 0x3F];
+ }
+
+ bits = (bits << 8) + object[idx];
+ }
+
+ // Dump tail
+
+ tail = max % 3;
+
+ if (tail === 0) {
+ result += map[(bits >> 18) & 0x3F];
+ result += map[(bits >> 12) & 0x3F];
+ result += map[(bits >> 6) & 0x3F];
+ result += map[bits & 0x3F];
+ } else if (tail === 2) {
+ result += map[(bits >> 10) & 0x3F];
+ result += map[(bits >> 4) & 0x3F];
+ result += map[(bits << 2) & 0x3F];
+ result += map[64];
+ } else if (tail === 1) {
+ result += map[(bits >> 2) & 0x3F];
+ result += map[(bits << 4) & 0x3F];
+ result += map[64];
+ result += map[64];
+ }
+
+ return result;
+}
+
+function isBinary(object) {
+ return NodeBuffer && NodeBuffer.isBuffer(object);
+}
+
+var binary = new Type$12('tag:yaml.org,2002:binary', {
+ kind: 'scalar',
+ resolve: resolveYamlBinary,
+ construct: constructYamlBinary,
+ predicate: isBinary,
+ represent: representYamlBinary
+});
+
+var Type$13 = type;
+
+var _hasOwnProperty$1 = Object.prototype.hasOwnProperty;
+var _toString = Object.prototype.toString;
+
+function resolveYamlOmap(data) {
+ if (data === null) { return true; }
+
+ var objectKeys = [], index, length, pair, pairKey, pairHasKey,
+ object = data;
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ pair = object[index];
+ pairHasKey = false;
+
+ if (_toString.call(pair) !== '[object Object]') { return false; }
+
+ for (pairKey in pair) {
+ if (_hasOwnProperty$1.call(pair, pairKey)) {
+ if (!pairHasKey) { pairHasKey = true; }
+ else { return false; }
+ }
+ }
+
+ if (!pairHasKey) { return false; }
+
+ if (objectKeys.indexOf(pairKey) === -1) { objectKeys.push(pairKey); }
+ else { return false; }
+ }
+
+ return true;
+}
+
+function constructYamlOmap(data) {
+ return data !== null ? data : [];
+}
+
+var omap = new Type$13('tag:yaml.org,2002:omap', {
+ kind: 'sequence',
+ resolve: resolveYamlOmap,
+ construct: constructYamlOmap
+});
+
+var Type$14 = type;
+
+var _toString$1 = Object.prototype.toString;
+
+function resolveYamlPairs(data) {
+ if (data === null) { return true; }
+
+ var index, length, pair, keys, result,
+ object = data;
+
+ result = new Array(object.length);
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ pair = object[index];
+
+ if (_toString$1.call(pair) !== '[object Object]') { return false; }
+
+ keys = Object.keys(pair);
+
+ if (keys.length !== 1) { return false; }
+
+ result[index] = [ keys[0], pair[keys[0]] ];
+ }
+
+ return true;
+}
+
+function constructYamlPairs(data) {
+ if (data === null) { return []; }
+
+ var index, length, pair, keys, result,
+ object = data;
+
+ result = new Array(object.length);
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ pair = object[index];
+
+ keys = Object.keys(pair);
+
+ result[index] = [ keys[0], pair[keys[0]] ];
+ }
+
+ return result;
+}
+
+var pairs = new Type$14('tag:yaml.org,2002:pairs', {
+ kind: 'sequence',
+ resolve: resolveYamlPairs,
+ construct: constructYamlPairs
+});
+
+var Type$15 = type;
+
+var _hasOwnProperty$2 = Object.prototype.hasOwnProperty;
+
+function resolveYamlSet(data) {
+ if (data === null) { return true; }
+
+ var key, object = data;
+
+ for (key in object) {
+ if (_hasOwnProperty$2.call(object, key)) {
+ if (object[key] !== null) { return false; }
+ }
+ }
+
+ return true;
+}
+
+function constructYamlSet(data) {
+ return data !== null ? data : {};
+}
+
+var set = new Type$15('tag:yaml.org,2002:set', {
+ kind: 'mapping',
+ resolve: resolveYamlSet,
+ construct: constructYamlSet
+});
+
+var Schema$1 = schema;
+
+
+var default_safe = new Schema$1({
+ include: [
+ core
+ ],
+ implicit: [
+ timestamp,
+ merge
+ ],
+ explicit: [
+ binary,
+ omap,
+ pairs,
+ set
+ ]
+});
+
+var Type$16 = type;
+
+function resolveJavascriptUndefined() {
+ return true;
+}
+
+function constructJavascriptUndefined() {
+ /*eslint-disable no-undefined*/
+ return undefined;
+}
+
+function representJavascriptUndefined() {
+ return '';
+}
+
+function isUndefined(object) {
+ return typeof object === 'undefined';
+}
+
+var _undefined = new Type$16('tag:yaml.org,2002:js/undefined', {
+ kind: 'scalar',
+ resolve: resolveJavascriptUndefined,
+ construct: constructJavascriptUndefined,
+ predicate: isUndefined,
+ represent: representJavascriptUndefined
+});
+
+var Type$17 = type;
+
+function resolveJavascriptRegExp(data) {
+ if (data === null) { return false; }
+ if (data.length === 0) { return false; }
+
+ var regexp = data,
+ tail = /\/([gim]*)$/.exec(data),
+ modifiers = '';
+
+ // if regexp starts with '/' it can have modifiers and must be properly closed
+ // `/foo/gim` - modifiers tail can be maximum 3 chars
+ if (regexp[0] === '/') {
+ if (tail) { modifiers = tail[1]; }
+
+ if (modifiers.length > 3) { return false; }
+ // if expression starts with /, is should be properly terminated
+ if (regexp[regexp.length - modifiers.length - 1] !== '/') { return false; }
+ }
+
+ return true;
+}
+
+function constructJavascriptRegExp(data) {
+ var regexp = data,
+ tail = /\/([gim]*)$/.exec(data),
+ modifiers = '';
+
+ // `/foo/gim` - tail can be maximum 4 chars
+ if (regexp[0] === '/') {
+ if (tail) { modifiers = tail[1]; }
+ regexp = regexp.slice(1, regexp.length - modifiers.length - 1);
+ }
+
+ return new RegExp(regexp, modifiers);
+}
+
+function representJavascriptRegExp(object /*, style*/) {
+ var result = '/' + object.source + '/';
+
+ if (object.global) { result += 'g'; }
+ if (object.multiline) { result += 'm'; }
+ if (object.ignoreCase) { result += 'i'; }
+
+ return result;
+}
+
+function isRegExp(object) {
+ return Object.prototype.toString.call(object) === '[object RegExp]';
+}
+
+var regexp = new Type$17('tag:yaml.org,2002:js/regexp', {
+ kind: 'scalar',
+ resolve: resolveJavascriptRegExp,
+ construct: constructJavascriptRegExp,
+ predicate: isRegExp,
+ represent: representJavascriptRegExp
+});
+
+var esprima;
+
+// Browserified version does not have esprima
+//
+// 1. For node.js just require module as deps
+// 2. For browser try to require mudule via external AMD system.
+// If not found - try to fallback to window.esprima. If not
+// found too - then fail to parse.
+//
+try {
+ // workaround to exclude package from browserify list.
+ var _require$1 = commonjsRequire;
+ esprima = _require$1('esprima');
+} catch (_) {
+ /*global window */
+ if (typeof window !== 'undefined') { esprima = window.esprima; }
+}
+
+var Type$18 = type;
+
+function resolveJavascriptFunction(data) {
+ if (data === null) { return false; }
+
+ try {
+ var source = '(' + data + ')',
+ ast = esprima.parse(source, { range: true });
+
+ if (ast.type !== 'Program' ||
+ ast.body.length !== 1 ||
+ ast.body[0].type !== 'ExpressionStatement' ||
+ ast.body[0].expression.type !== 'FunctionExpression') {
+ return false;
+ }
+
+ return true;
+ } catch (err) {
+ return false;
+ }
+}
+
+function constructJavascriptFunction(data) {
+ /*jslint evil:true*/
+
+ var source = '(' + data + ')',
+ ast = esprima.parse(source, { range: true }),
+ params = [],
+ body;
+
+ if (ast.type !== 'Program' ||
+ ast.body.length !== 1 ||
+ ast.body[0].type !== 'ExpressionStatement' ||
+ ast.body[0].expression.type !== 'FunctionExpression') {
+ throw new Error('Failed to resolve function');
+ }
+
+ ast.body[0].expression.params.forEach(function (param) {
+ params.push(param.name);
+ });
+
+ body = ast.body[0].expression.body.range;
+
+ // Esprima's ranges include the first '{' and the last '}' characters on
+ // function expressions. So cut them out.
+ /*eslint-disable no-new-func*/
+ return new Function(params, source.slice(body[0] + 1, body[1] - 1));
+}
+
+function representJavascriptFunction(object /*, style*/) {
+ return object.toString();
+}
+
+function isFunction(object) {
+ return Object.prototype.toString.call(object) === '[object Function]';
+}
+
+var _function = new Type$18('tag:yaml.org,2002:js/function', {
+ kind: 'scalar',
+ resolve: resolveJavascriptFunction,
+ construct: constructJavascriptFunction,
+ predicate: isFunction,
+ represent: representJavascriptFunction
+});
+
+var Schema$6 = schema;
+
+
+var default_full = Schema$6.DEFAULT = new Schema$6({
+ include: [
+ default_safe
+ ],
+ explicit: [
+ _undefined,
+ regexp,
+ _function
+ ]
+});
+
+var common = common$1;
+var YAMLException$1 = exception;
+var Mark = mark;
+var DEFAULT_SAFE_SCHEMA$1 = default_safe;
+var DEFAULT_FULL_SCHEMA$1 = default_full;
+
+
+var _hasOwnProperty = Object.prototype.hasOwnProperty;
+
+
+var CONTEXT_FLOW_IN = 1;
+var CONTEXT_FLOW_OUT = 2;
+var CONTEXT_BLOCK_IN = 3;
+var CONTEXT_BLOCK_OUT = 4;
+
+
+var CHOMPING_CLIP = 1;
+var CHOMPING_STRIP = 2;
+var CHOMPING_KEEP = 3;
+
+
+var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
+var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
+var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/;
+var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i;
+var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
+
+
+function is_EOL(c) {
+ return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);
+}
+
+function is_WHITE_SPACE(c) {
+ return (c === 0x09/* Tab */) || (c === 0x20/* Space */);
+}
+
+function is_WS_OR_EOL(c) {
+ return (c === 0x09/* Tab */) ||
+ (c === 0x20/* Space */) ||
+ (c === 0x0A/* LF */) ||
+ (c === 0x0D/* CR */);
+}
+
+function is_FLOW_INDICATOR(c) {
+ return c === 0x2C/* , */ ||
+ c === 0x5B/* [ */ ||
+ c === 0x5D/* ] */ ||
+ c === 0x7B/* { */ ||
+ c === 0x7D/* } */;
+}
+
+function fromHexCode(c) {
+ var lc;
+
+ if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
+ return c - 0x30;
+ }
+
+ /*eslint-disable no-bitwise*/
+ lc = c | 0x20;
+
+ if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {
+ return lc - 0x61 + 10;
+ }
+
+ return -1;
+}
+
+function escapedHexLen(c) {
+ if (c === 0x78/* x */) { return 2; }
+ if (c === 0x75/* u */) { return 4; }
+ if (c === 0x55/* U */) { return 8; }
+ return 0;
+}
+
+function fromDecimalCode(c) {
+ if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
+ return c - 0x30;
+ }
+
+ return -1;
+}
+
+function simpleEscapeSequence(c) {
+ return (c === 0x30/* 0 */) ? '\x00' :
+ (c === 0x61/* a */) ? '\x07' :
+ (c === 0x62/* b */) ? '\x08' :
+ (c === 0x74/* t */) ? '\x09' :
+ (c === 0x09/* Tab */) ? '\x09' :
+ (c === 0x6E/* n */) ? '\x0A' :
+ (c === 0x76/* v */) ? '\x0B' :
+ (c === 0x66/* f */) ? '\x0C' :
+ (c === 0x72/* r */) ? '\x0D' :
+ (c === 0x65/* e */) ? '\x1B' :
+ (c === 0x20/* Space */) ? ' ' :
+ (c === 0x22/* " */) ? '\x22' :
+ (c === 0x2F/* / */) ? '/' :
+ (c === 0x5C/* \ */) ? '\x5C' :
+ (c === 0x4E/* N */) ? '\x85' :
+ (c === 0x5F/* _ */) ? '\xA0' :
+ (c === 0x4C/* L */) ? '\u2028' :
+ (c === 0x50/* P */) ? '\u2029' : '';
+}
+
+function charFromCodepoint(c) {
+ if (c <= 0xFFFF) {
+ return String.fromCharCode(c);
+ }
+ // Encode UTF-16 surrogate pair
+ // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF
+ return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,
+ ((c - 0x010000) & 0x03FF) + 0xDC00);
+}
+
+var simpleEscapeCheck = new Array(256); // integer, for fast access
+var simpleEscapeMap = new Array(256);
+for (var i = 0; i < 256; i++) {
+ simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;
+ simpleEscapeMap[i] = simpleEscapeSequence(i);
+}
+
+
+function State(input, options) {
+ this.input = input;
+
+ this.filename = options['filename'] || null;
+ this.schema = options['schema'] || DEFAULT_FULL_SCHEMA$1;
+ this.onWarning = options['onWarning'] || null;
+ this.legacy = options['legacy'] || false;
+ this.json = options['json'] || false;
+ this.listener = options['listener'] || null;
+
+ this.implicitTypes = this.schema.compiledImplicit;
+ this.typeMap = this.schema.compiledTypeMap;
+
+ this.length = input.length;
+ this.position = 0;
+ this.line = 0;
+ this.lineStart = 0;
+ this.lineIndent = 0;
+
+ this.documents = [];
+
+ /*
+ this.version;
+ this.checkLineBreaks;
+ this.tagMap;
+ this.anchorMap;
+ this.tag;
+ this.anchor;
+ this.kind;
+ this.result;*/
+
+}
+
+
+function generateError(state, message) {
+ return new YAMLException$1(
+ message,
+ new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));
+}
+
+function throwError(state, message) {
+ throw generateError(state, message);
+}
+
+function throwWarning(state, message) {
+ if (state.onWarning) {
+ state.onWarning.call(null, generateError(state, message));
+ }
+}
+
+
+var directiveHandlers = {
+
+ YAML: function handleYamlDirective(state, name, args) {
+
+ var match, major, minor;
+
+ if (state.version !== null) {
+ throwError(state, 'duplication of %YAML directive');
+ }
+
+ if (args.length !== 1) {
+ throwError(state, 'YAML directive accepts exactly one argument');
+ }
+
+ match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]);
+
+ if (match === null) {
+ throwError(state, 'ill-formed argument of the YAML directive');
+ }
+
+ major = parseInt(match[1], 10);
+ minor = parseInt(match[2], 10);
+
+ if (major !== 1) {
+ throwError(state, 'unacceptable YAML version of the document');
+ }
+
+ state.version = args[0];
+ state.checkLineBreaks = (minor < 2);
+
+ if (minor !== 1 && minor !== 2) {
+ throwWarning(state, 'unsupported YAML version of the document');
+ }
+ },
+
+ TAG: function handleTagDirective(state, name, args) {
+
+ var handle, prefix;
+
+ if (args.length !== 2) {
+ throwError(state, 'TAG directive accepts exactly two arguments');
+ }
+
+ handle = args[0];
+ prefix = args[1];
+
+ if (!PATTERN_TAG_HANDLE.test(handle)) {
+ throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');
+ }
+
+ if (_hasOwnProperty.call(state.tagMap, handle)) {
+ throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle');
+ }
+
+ if (!PATTERN_TAG_URI.test(prefix)) {
+ throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');
+ }
+
+ state.tagMap[handle] = prefix;
+ }
+};
+
+
+function captureSegment(state, start, end, checkJson) {
+ var _position, _length, _character, _result;
+
+ if (start < end) {
+ _result = state.input.slice(start, end);
+
+ if (checkJson) {
+ for (_position = 0, _length = _result.length;
+ _position < _length;
+ _position += 1) {
+ _character = _result.charCodeAt(_position);
+ if (!(_character === 0x09 ||
+ (0x20 <= _character && _character <= 0x10FFFF))) {
+ throwError(state, 'expected valid JSON character');
+ }
+ }
+ } else if (PATTERN_NON_PRINTABLE.test(_result)) {
+ throwError(state, 'the stream contains non-printable characters');
+ }
+
+ state.result += _result;
+ }
+}
+
+function mergeMappings(state, destination, source, overridableKeys) {
+ var sourceKeys, key, index, quantity;
+
+ if (!common.isObject(source)) {
+ throwError(state, 'cannot merge mappings; the provided source object is unacceptable');
+ }
+
+ sourceKeys = Object.keys(source);
+
+ for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
+ key = sourceKeys[index];
+
+ if (!_hasOwnProperty.call(destination, key)) {
+ destination[key] = source[key];
+ overridableKeys[key] = true;
+ }
+ }
+}
+
+function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {
+ var index, quantity;
+
+ keyNode = String(keyNode);
+
+ if (_result === null) {
+ _result = {};
+ }
+
+ if (keyTag === 'tag:yaml.org,2002:merge') {
+ if (Array.isArray(valueNode)) {
+ for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {
+ mergeMappings(state, _result, valueNode[index], overridableKeys);
+ }
+ } else {
+ mergeMappings(state, _result, valueNode, overridableKeys);
+ }
+ } else {
+ if (!state.json &&
+ !_hasOwnProperty.call(overridableKeys, keyNode) &&
+ _hasOwnProperty.call(_result, keyNode)) {
+ throwError(state, 'duplicated mapping key');
+ }
+ _result[keyNode] = valueNode;
+ delete overridableKeys[keyNode];
+ }
+
+ return _result;
+}
+
+function readLineBreak(state) {
+ var ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch === 0x0A/* LF */) {
+ state.position++;
+ } else if (ch === 0x0D/* CR */) {
+ state.position++;
+ if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {
+ state.position++;
+ }
+ } else {
+ throwError(state, 'a line break is expected');
+ }
+
+ state.line += 1;
+ state.lineStart = state.position;
+}
+
+function skipSeparationSpace(state, allowComments, checkIndent) {
+ var lineBreaks = 0,
+ ch = state.input.charCodeAt(state.position);
+
+ while (ch !== 0) {
+ while (is_WHITE_SPACE(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (allowComments && ch === 0x23/* # */) {
+ do {
+ ch = state.input.charCodeAt(++state.position);
+ } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);
+ }
+
+ if (is_EOL(ch)) {
+ readLineBreak(state);
+
+ ch = state.input.charCodeAt(state.position);
+ lineBreaks++;
+ state.lineIndent = 0;
+
+ while (ch === 0x20/* Space */) {
+ state.lineIndent++;
+ ch = state.input.charCodeAt(++state.position);
+ }
+ } else {
+ break;
+ }
+ }
+
+ if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {
+ throwWarning(state, 'deficient indentation');
+ }
+
+ return lineBreaks;
+}
+
+function testDocumentSeparator(state) {
+ var _position = state.position,
+ ch;
+
+ ch = state.input.charCodeAt(_position);
+
+ // Condition state.position === state.lineStart is tested
+ // in parent on each call, for efficiency. No needs to test here again.
+ if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&
+ ch === state.input.charCodeAt(_position + 1) &&
+ ch === state.input.charCodeAt(_position + 2)) {
+
+ _position += 3;
+
+ ch = state.input.charCodeAt(_position);
+
+ if (ch === 0 || is_WS_OR_EOL(ch)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function writeFoldedLines(state, count) {
+ if (count === 1) {
+ state.result += ' ';
+ } else if (count > 1) {
+ state.result += common.repeat('\n', count - 1);
+ }
+}
+
+
+function readPlainScalar(state, nodeIndent, withinFlowCollection) {
+ var preceding,
+ following,
+ captureStart,
+ captureEnd,
+ hasPendingContent,
+ _line,
+ _lineStart,
+ _lineIndent,
+ _kind = state.kind,
+ _result = state.result,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (is_WS_OR_EOL(ch) ||
+ is_FLOW_INDICATOR(ch) ||
+ ch === 0x23/* # */ ||
+ ch === 0x26/* & */ ||
+ ch === 0x2A/* * */ ||
+ ch === 0x21/* ! */ ||
+ ch === 0x7C/* | */ ||
+ ch === 0x3E/* > */ ||
+ ch === 0x27/* ' */ ||
+ ch === 0x22/* " */ ||
+ ch === 0x25/* % */ ||
+ ch === 0x40/* @ */ ||
+ ch === 0x60/* ` */) {
+ return false;
+ }
+
+ if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {
+ following = state.input.charCodeAt(state.position + 1);
+
+ if (is_WS_OR_EOL(following) ||
+ withinFlowCollection && is_FLOW_INDICATOR(following)) {
+ return false;
+ }
+ }
+
+ state.kind = 'scalar';
+ state.result = '';
+ captureStart = captureEnd = state.position;
+ hasPendingContent = false;
+
+ while (ch !== 0) {
+ if (ch === 0x3A/* : */) {
+ following = state.input.charCodeAt(state.position + 1);
+
+ if (is_WS_OR_EOL(following) ||
+ withinFlowCollection && is_FLOW_INDICATOR(following)) {
+ break;
+ }
+
+ } else if (ch === 0x23/* # */) {
+ preceding = state.input.charCodeAt(state.position - 1);
+
+ if (is_WS_OR_EOL(preceding)) {
+ break;
+ }
+
+ } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||
+ withinFlowCollection && is_FLOW_INDICATOR(ch)) {
+ break;
+
+ } else if (is_EOL(ch)) {
+ _line = state.line;
+ _lineStart = state.lineStart;
+ _lineIndent = state.lineIndent;
+ skipSeparationSpace(state, false, -1);
+
+ if (state.lineIndent >= nodeIndent) {
+ hasPendingContent = true;
+ ch = state.input.charCodeAt(state.position);
+ continue;
+ } else {
+ state.position = captureEnd;
+ state.line = _line;
+ state.lineStart = _lineStart;
+ state.lineIndent = _lineIndent;
+ break;
+ }
+ }
+
+ if (hasPendingContent) {
+ captureSegment(state, captureStart, captureEnd, false);
+ writeFoldedLines(state, state.line - _line);
+ captureStart = captureEnd = state.position;
+ hasPendingContent = false;
+ }
+
+ if (!is_WHITE_SPACE(ch)) {
+ captureEnd = state.position + 1;
+ }
+
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ captureSegment(state, captureStart, captureEnd, false);
+
+ if (state.result) {
+ return true;
+ }
+
+ state.kind = _kind;
+ state.result = _result;
+ return false;
+}
+
+function readSingleQuotedScalar(state, nodeIndent) {
+ var ch,
+ captureStart, captureEnd;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch !== 0x27/* ' */) {
+ return false;
+ }
+
+ state.kind = 'scalar';
+ state.result = '';
+ state.position++;
+ captureStart = captureEnd = state.position;
+
+ while ((ch = state.input.charCodeAt(state.position)) !== 0) {
+ if (ch === 0x27/* ' */) {
+ captureSegment(state, captureStart, state.position, true);
+ ch = state.input.charCodeAt(++state.position);
+
+ if (ch === 0x27/* ' */) {
+ captureStart = state.position;
+ state.position++;
+ captureEnd = state.position;
+ } else {
+ return true;
+ }
+
+ } else if (is_EOL(ch)) {
+ captureSegment(state, captureStart, captureEnd, true);
+ writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
+ captureStart = captureEnd = state.position;
+
+ } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
+ throwError(state, 'unexpected end of the document within a single quoted scalar');
+
+ } else {
+ state.position++;
+ captureEnd = state.position;
+ }
+ }
+
+ throwError(state, 'unexpected end of the stream within a single quoted scalar');
+}
+
+function readDoubleQuotedScalar(state, nodeIndent) {
+ var captureStart,
+ captureEnd,
+ hexLength,
+ hexResult,
+ tmp,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch !== 0x22/* " */) {
+ return false;
+ }
+
+ state.kind = 'scalar';
+ state.result = '';
+ state.position++;
+ captureStart = captureEnd = state.position;
+
+ while ((ch = state.input.charCodeAt(state.position)) !== 0) {
+ if (ch === 0x22/* " */) {
+ captureSegment(state, captureStart, state.position, true);
+ state.position++;
+ return true;
+
+ } else if (ch === 0x5C/* \ */) {
+ captureSegment(state, captureStart, state.position, true);
+ ch = state.input.charCodeAt(++state.position);
+
+ if (is_EOL(ch)) {
+ skipSeparationSpace(state, false, nodeIndent);
+
+ // TODO: rework to inline fn with no type cast?
+ } else if (ch < 256 && simpleEscapeCheck[ch]) {
+ state.result += simpleEscapeMap[ch];
+ state.position++;
+
+ } else if ((tmp = escapedHexLen(ch)) > 0) {
+ hexLength = tmp;
+ hexResult = 0;
+
+ for (; hexLength > 0; hexLength--) {
+ ch = state.input.charCodeAt(++state.position);
+
+ if ((tmp = fromHexCode(ch)) >= 0) {
+ hexResult = (hexResult << 4) + tmp;
+
+ } else {
+ throwError(state, 'expected hexadecimal character');
+ }
+ }
+
+ state.result += charFromCodepoint(hexResult);
+
+ state.position++;
+
+ } else {
+ throwError(state, 'unknown escape sequence');
+ }
+
+ captureStart = captureEnd = state.position;
+
+ } else if (is_EOL(ch)) {
+ captureSegment(state, captureStart, captureEnd, true);
+ writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
+ captureStart = captureEnd = state.position;
+
+ } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
+ throwError(state, 'unexpected end of the document within a double quoted scalar');
+
+ } else {
+ state.position++;
+ captureEnd = state.position;
+ }
+ }
+
+ throwError(state, 'unexpected end of the stream within a double quoted scalar');
+}
+
+function readFlowCollection(state, nodeIndent) {
+ var readNext = true,
+ _line,
+ _tag = state.tag,
+ _result,
+ _anchor = state.anchor,
+ following,
+ terminator,
+ isPair,
+ isExplicitPair,
+ isMapping,
+ overridableKeys = {},
+ keyNode,
+ keyTag,
+ valueNode,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch === 0x5B/* [ */) {
+ terminator = 0x5D;/* ] */
+ isMapping = false;
+ _result = [];
+ } else if (ch === 0x7B/* { */) {
+ terminator = 0x7D;/* } */
+ isMapping = true;
+ _result = {};
+ } else {
+ return false;
+ }
+
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = _result;
+ }
+
+ ch = state.input.charCodeAt(++state.position);
+
+ while (ch !== 0) {
+ skipSeparationSpace(state, true, nodeIndent);
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch === terminator) {
+ state.position++;
+ state.tag = _tag;
+ state.anchor = _anchor;
+ state.kind = isMapping ? 'mapping' : 'sequence';
+ state.result = _result;
+ return true;
+ } else if (!readNext) {
+ throwError(state, 'missed comma between flow collection entries');
+ }
+
+ keyTag = keyNode = valueNode = null;
+ isPair = isExplicitPair = false;
+
+ if (ch === 0x3F/* ? */) {
+ following = state.input.charCodeAt(state.position + 1);
+
+ if (is_WS_OR_EOL(following)) {
+ isPair = isExplicitPair = true;
+ state.position++;
+ skipSeparationSpace(state, true, nodeIndent);
+ }
+ }
+
+ _line = state.line;
+ composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
+ keyTag = state.tag;
+ keyNode = state.result;
+ skipSeparationSpace(state, true, nodeIndent);
+
+ ch = state.input.charCodeAt(state.position);
+
+ if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {
+ isPair = true;
+ ch = state.input.charCodeAt(++state.position);
+ skipSeparationSpace(state, true, nodeIndent);
+ composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
+ valueNode = state.result;
+ }
+
+ if (isMapping) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);
+ } else if (isPair) {
+ _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));
+ } else {
+ _result.push(keyNode);
+ }
+
+ skipSeparationSpace(state, true, nodeIndent);
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch === 0x2C/* , */) {
+ readNext = true;
+ ch = state.input.charCodeAt(++state.position);
+ } else {
+ readNext = false;
+ }
+ }
+
+ throwError(state, 'unexpected end of the stream within a flow collection');
+}
+
+function readBlockScalar(state, nodeIndent) {
+ var captureStart,
+ folding,
+ chomping = CHOMPING_CLIP,
+ didReadContent = false,
+ detectedIndent = false,
+ textIndent = nodeIndent,
+ emptyLines = 0,
+ atMoreIndented = false,
+ tmp,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch === 0x7C/* | */) {
+ folding = false;
+ } else if (ch === 0x3E/* > */) {
+ folding = true;
+ } else {
+ return false;
+ }
+
+ state.kind = 'scalar';
+ state.result = '';
+
+ while (ch !== 0) {
+ ch = state.input.charCodeAt(++state.position);
+
+ if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {
+ if (CHOMPING_CLIP === chomping) {
+ chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;
+ } else {
+ throwError(state, 'repeat of a chomping mode identifier');
+ }
+
+ } else if ((tmp = fromDecimalCode(ch)) >= 0) {
+ if (tmp === 0) {
+ throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');
+ } else if (!detectedIndent) {
+ textIndent = nodeIndent + tmp - 1;
+ detectedIndent = true;
+ } else {
+ throwError(state, 'repeat of an indentation width identifier');
+ }
+
+ } else {
+ break;
+ }
+ }
+
+ if (is_WHITE_SPACE(ch)) {
+ do { ch = state.input.charCodeAt(++state.position); }
+ while (is_WHITE_SPACE(ch));
+
+ if (ch === 0x23/* # */) {
+ do { ch = state.input.charCodeAt(++state.position); }
+ while (!is_EOL(ch) && (ch !== 0));
+ }
+ }
+
+ while (ch !== 0) {
+ readLineBreak(state);
+ state.lineIndent = 0;
+
+ ch = state.input.charCodeAt(state.position);
+
+ while ((!detectedIndent || state.lineIndent < textIndent) &&
+ (ch === 0x20/* Space */)) {
+ state.lineIndent++;
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (!detectedIndent && state.lineIndent > textIndent) {
+ textIndent = state.lineIndent;
+ }
+
+ if (is_EOL(ch)) {
+ emptyLines++;
+ continue;
+ }
+
+ // End of the scalar.
+ if (state.lineIndent < textIndent) {
+
+ // Perform the chomping.
+ if (chomping === CHOMPING_KEEP) {
+ state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
+ } else if (chomping === CHOMPING_CLIP) {
+ if (didReadContent) { // i.e. only if the scalar is not empty.
+ state.result += '\n';
+ }
+ }
+
+ // Break this `while` cycle and go to the funciton's epilogue.
+ break;
+ }
+
+ // Folded style: use fancy rules to handle line breaks.
+ if (folding) {
+
+ // Lines starting with white space characters (more-indented lines) are not folded.
+ if (is_WHITE_SPACE(ch)) {
+ atMoreIndented = true;
+ // except for the first content line (cf. Example 8.1)
+ state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
+
+ // End of more-indented block.
+ } else if (atMoreIndented) {
+ atMoreIndented = false;
+ state.result += common.repeat('\n', emptyLines + 1);
+
+ // Just one line break - perceive as the same line.
+ } else if (emptyLines === 0) {
+ if (didReadContent) { // i.e. only if we have already read some scalar content.
+ state.result += ' ';
+ }
+
+ // Several line breaks - perceive as different lines.
+ } else {
+ state.result += common.repeat('\n', emptyLines);
+ }
+
+ // Literal style: just add exact number of line breaks between content lines.
+ } else {
+ // Keep all line breaks except the header line break.
+ state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
+ }
+
+ didReadContent = true;
+ detectedIndent = true;
+ emptyLines = 0;
+ captureStart = state.position;
+
+ while (!is_EOL(ch) && (ch !== 0)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ captureSegment(state, captureStart, state.position, false);
+ }
+
+ return true;
+}
+
+function readBlockSequence(state, nodeIndent) {
+ var _line,
+ _tag = state.tag,
+ _anchor = state.anchor,
+ _result = [],
+ following,
+ detected = false,
+ ch;
+
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = _result;
+ }
+
+ ch = state.input.charCodeAt(state.position);
+
+ while (ch !== 0) {
+
+ if (ch !== 0x2D/* - */) {
+ break;
+ }
+
+ following = state.input.charCodeAt(state.position + 1);
+
+ if (!is_WS_OR_EOL(following)) {
+ break;
+ }
+
+ detected = true;
+ state.position++;
+
+ if (skipSeparationSpace(state, true, -1)) {
+ if (state.lineIndent <= nodeIndent) {
+ _result.push(null);
+ ch = state.input.charCodeAt(state.position);
+ continue;
+ }
+ }
+
+ _line = state.line;
+ composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);
+ _result.push(state.result);
+ skipSeparationSpace(state, true, -1);
+
+ ch = state.input.charCodeAt(state.position);
+
+ if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {
+ throwError(state, 'bad indentation of a sequence entry');
+ } else if (state.lineIndent < nodeIndent) {
+ break;
+ }
+ }
+
+ if (detected) {
+ state.tag = _tag;
+ state.anchor = _anchor;
+ state.kind = 'sequence';
+ state.result = _result;
+ return true;
+ }
+ return false;
+}
+
+function readBlockMapping(state, nodeIndent, flowIndent) {
+ var following,
+ allowCompact,
+ _line,
+ _tag = state.tag,
+ _anchor = state.anchor,
+ _result = {},
+ overridableKeys = {},
+ keyTag = null,
+ keyNode = null,
+ valueNode = null,
+ atExplicitKey = false,
+ detected = false,
+ ch;
+
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = _result;
+ }
+
+ ch = state.input.charCodeAt(state.position);
+
+ while (ch !== 0) {
+ following = state.input.charCodeAt(state.position + 1);
+ _line = state.line; // Save the current line.
+
+ //
+ // Explicit notation case. There are two separate blocks:
+ // first for the key (denoted by "?") and second for the value (denoted by ":")
+ //
+ if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {
+
+ if (ch === 0x3F/* ? */) {
+ if (atExplicitKey) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
+ keyTag = keyNode = valueNode = null;
+ }
+
+ detected = true;
+ atExplicitKey = true;
+ allowCompact = true;
+
+ } else if (atExplicitKey) {
+ // i.e. 0x3A/* : */ === character after the explicit key.
+ atExplicitKey = false;
+ allowCompact = true;
+
+ } else {
+ throwError(state, 'incomplete explicit mapping pair; a key node is missed');
+ }
+
+ state.position += 1;
+ ch = following;
+
+ //
+ // Implicit notation case. Flow-style node as the key first, then ":", and the value.
+ //
+ } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {
+
+ if (state.line === _line) {
+ ch = state.input.charCodeAt(state.position);
+
+ while (is_WHITE_SPACE(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (ch === 0x3A/* : */) {
+ ch = state.input.charCodeAt(++state.position);
+
+ if (!is_WS_OR_EOL(ch)) {
+ throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');
+ }
+
+ if (atExplicitKey) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
+ keyTag = keyNode = valueNode = null;
+ }
+
+ detected = true;
+ atExplicitKey = false;
+ allowCompact = false;
+ keyTag = state.tag;
+ keyNode = state.result;
+
+ } else if (detected) {
+ throwError(state, 'can not read an implicit mapping pair; a colon is missed');
+
+ } else {
+ state.tag = _tag;
+ state.anchor = _anchor;
+ return true; // Keep the result of `composeNode`.
+ }
+
+ } else if (detected) {
+ throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');
+
+ } else {
+ state.tag = _tag;
+ state.anchor = _anchor;
+ return true; // Keep the result of `composeNode`.
+ }
+
+ } else {
+ break; // Reading is done. Go to the epilogue.
+ }
+
+ //
+ // Common reading code for both explicit and implicit notations.
+ //
+ if (state.line === _line || state.lineIndent > nodeIndent) {
+ if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {
+ if (atExplicitKey) {
+ keyNode = state.result;
+ } else {
+ valueNode = state.result;
+ }
+ }
+
+ if (!atExplicitKey) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);
+ keyTag = keyNode = valueNode = null;
+ }
+
+ skipSeparationSpace(state, true, -1);
+ ch = state.input.charCodeAt(state.position);
+ }
+
+ if (state.lineIndent > nodeIndent && (ch !== 0)) {
+ throwError(state, 'bad indentation of a mapping entry');
+ } else if (state.lineIndent < nodeIndent) {
+ break;
+ }
+ }
+
+ //
+ // Epilogue.
+ //
+
+ // Special case: last mapping's node contains only the key in explicit notation.
+ if (atExplicitKey) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
+ }
+
+ // Expose the resulting mapping.
+ if (detected) {
+ state.tag = _tag;
+ state.anchor = _anchor;
+ state.kind = 'mapping';
+ state.result = _result;
+ }
+
+ return detected;
+}
+
+function readTagProperty(state) {
+ var _position,
+ isVerbatim = false,
+ isNamed = false,
+ tagHandle,
+ tagName,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch !== 0x21/* ! */) { return false; }
+
+ if (state.tag !== null) {
+ throwError(state, 'duplication of a tag property');
+ }
+
+ ch = state.input.charCodeAt(++state.position);
+
+ if (ch === 0x3C/* < */) {
+ isVerbatim = true;
+ ch = state.input.charCodeAt(++state.position);
+
+ } else if (ch === 0x21/* ! */) {
+ isNamed = true;
+ tagHandle = '!!';
+ ch = state.input.charCodeAt(++state.position);
+
+ } else {
+ tagHandle = '!';
+ }
+
+ _position = state.position;
+
+ if (isVerbatim) {
+ do { ch = state.input.charCodeAt(++state.position); }
+ while (ch !== 0 && ch !== 0x3E/* > */);
+
+ if (state.position < state.length) {
+ tagName = state.input.slice(_position, state.position);
+ ch = state.input.charCodeAt(++state.position);
+ } else {
+ throwError(state, 'unexpected end of the stream within a verbatim tag');
+ }
+ } else {
+ while (ch !== 0 && !is_WS_OR_EOL(ch)) {
+
+ if (ch === 0x21/* ! */) {
+ if (!isNamed) {
+ tagHandle = state.input.slice(_position - 1, state.position + 1);
+
+ if (!PATTERN_TAG_HANDLE.test(tagHandle)) {
+ throwError(state, 'named tag handle cannot contain such characters');
+ }
+
+ isNamed = true;
+ _position = state.position + 1;
+ } else {
+ throwError(state, 'tag suffix cannot contain exclamation marks');
+ }
+ }
+
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ tagName = state.input.slice(_position, state.position);
+
+ if (PATTERN_FLOW_INDICATORS.test(tagName)) {
+ throwError(state, 'tag suffix cannot contain flow indicator characters');
+ }
+ }
+
+ if (tagName && !PATTERN_TAG_URI.test(tagName)) {
+ throwError(state, 'tag name cannot contain such characters: ' + tagName);
+ }
+
+ if (isVerbatim) {
+ state.tag = tagName;
+
+ } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {
+ state.tag = state.tagMap[tagHandle] + tagName;
+
+ } else if (tagHandle === '!') {
+ state.tag = '!' + tagName;
+
+ } else if (tagHandle === '!!') {
+ state.tag = 'tag:yaml.org,2002:' + tagName;
+
+ } else {
+ throwError(state, 'undeclared tag handle "' + tagHandle + '"');
+ }
+
+ return true;
+}
+
+function readAnchorProperty(state) {
+ var _position,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch !== 0x26/* & */) { return false; }
+
+ if (state.anchor !== null) {
+ throwError(state, 'duplication of an anchor property');
+ }
+
+ ch = state.input.charCodeAt(++state.position);
+ _position = state.position;
+
+ while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (state.position === _position) {
+ throwError(state, 'name of an anchor node must contain at least one character');
+ }
+
+ state.anchor = state.input.slice(_position, state.position);
+ return true;
+}
+
+function readAlias(state) {
+ var _position, alias,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch !== 0x2A/* * */) { return false; }
+
+ ch = state.input.charCodeAt(++state.position);
+ _position = state.position;
+
+ while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (state.position === _position) {
+ throwError(state, 'name of an alias node must contain at least one character');
+ }
+
+ alias = state.input.slice(_position, state.position);
+
+ if (!state.anchorMap.hasOwnProperty(alias)) {
+ throwError(state, 'unidentified alias "' + alias + '"');
+ }
+
+ state.result = state.anchorMap[alias];
+ skipSeparationSpace(state, true, -1);
+ return true;
+}
+
+function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {
+ var allowBlockStyles,
+ allowBlockScalars,
+ allowBlockCollections,
+ indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {
+ indentStatus = 1;
+ } else if (state.lineIndent === parentIndent) {
+ indentStatus = 0;
+ } else if (state.lineIndent < parentIndent) {
+ indentStatus = -1;
+ }
+ }
+ }
+
+ if (indentStatus === 1) {
+ while (readTagProperty(state) || readAnchorProperty(state)) {
+ if (skipSeparationSpace(state, true, -1)) {
+ atNewLine = true;
+ allowBlockCollections = allowBlockStyles;
+
+ if (state.lineIndent > parentIndent) {
+ indentStatus = 1;
+ } else if (state.lineIndent === parentIndent) {
+ indentStatus = 0;
+ } else if (state.lineIndent < parentIndent) {
+ indentStatus = -1;
+ }
+ } else {
+ allowBlockCollections = false;
+ }
+ }
+ }
+
+ if (allowBlockCollections) {
+ allowBlockCollections = atNewLine || allowCompact;
+ }
+
+ if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {
+ if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {
+ flowIndent = parentIndent;
+ } else {
+ flowIndent = parentIndent + 1;
+ }
+
+ blockIndent = state.position - state.lineStart;
+
+ if (indentStatus === 1) {
+ if (allowBlockCollections &&
+ (readBlockSequence(state, blockIndent) ||
+ readBlockMapping(state, blockIndent, flowIndent)) ||
+ readFlowCollection(state, flowIndent)) {
+ hasContent = true;
+ } else {
+ if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||
+ readSingleQuotedScalar(state, flowIndent) ||
+ readDoubleQuotedScalar(state, flowIndent)) {
+ hasContent = true;
+
+ } else if (readAlias(state)) {
+ hasContent = true;
+
+ if (state.tag !== null || state.anchor !== null) {
+ throwError(state, 'alias node should not have any properties');
+ }
+
+ } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {
+ hasContent = true;
+
+ if (state.tag === null) {
+ state.tag = '?';
+ }
+ }
+
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = state.result;
+ }
+ }
+ } else if (indentStatus === 0) {
+ // Special case: block sequences are allowed to have same indentation level as the parent.
+ // http://www.yaml.org/spec/1.2/spec.html#id2799784
+ hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);
+ }
+ }
+
+ if (state.tag !== null && state.tag !== '!') {
+ if (state.tag === '?') {
+ for (typeIndex = 0, typeQuantity = state.implicitTypes.length;
+ typeIndex < typeQuantity;
+ typeIndex += 1) {
+ type = state.implicitTypes[typeIndex];
+
+ // Implicit resolving is not allowed for non-scalar types, and '?'
+ // non-specific tag is only assigned to plain scalars. So, it isn't
+ // needed to check for 'kind' conformity.
+
+ if (type.resolve(state.result)) { // `state.result` updated in resolver if matched
+ state.result = type.construct(state.result);
+ state.tag = type.tag;
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = state.result;
+ }
+ break;
+ }
+ }
+ } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {
+ type = state.typeMap[state.kind || 'fallback'][state.tag];
+
+ if (state.result !== null && type.kind !== state.kind) {
+ throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"');
+ }
+
+ if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched
+ throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');
+ } else {
+ state.result = type.construct(state.result);
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = state.result;
+ }
+ }
+ } else {
+ throwError(state, 'unknown tag !<' + state.tag + '>');
+ }
+ }
+
+ if (state.listener !== null) {
+ state.listener('close', state);
+ }
+ return state.tag !== null || state.anchor !== null || hasContent;
+}
+
+function readDocument(state) {
+ var documentStart = state.position,
+ _position,
+ directiveName,
+ directiveArgs,
+ hasDirectives = false,
+ ch;
+
+ state.version = null;
+ state.checkLineBreaks = state.legacy;
+ state.tagMap = {};
+ state.anchorMap = {};
+
+ while ((ch = state.input.charCodeAt(state.position)) !== 0) {
+ skipSeparationSpace(state, true, -1);
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (state.lineIndent > 0 || ch !== 0x25/* % */) {
+ break;
+ }
+
+ hasDirectives = true;
+ ch = state.input.charCodeAt(++state.position);
+ _position = state.position;
+
+ while (ch !== 0 && !is_WS_OR_EOL(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ directiveName = state.input.slice(_position, state.position);
+ directiveArgs = [];
+
+ if (directiveName.length < 1) {
+ throwError(state, 'directive name must not be less than one character in length');
+ }
+
+ while (ch !== 0) {
+ while (is_WHITE_SPACE(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (ch === 0x23/* # */) {
+ do { ch = state.input.charCodeAt(++state.position); }
+ while (ch !== 0 && !is_EOL(ch));
+ break;
+ }
+
+ if (is_EOL(ch)) { break; }
+
+ _position = state.position;
+
+ while (ch !== 0 && !is_WS_OR_EOL(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ directiveArgs.push(state.input.slice(_position, state.position));
+ }
+
+ if (ch !== 0) { readLineBreak(state); }
+
+ if (_hasOwnProperty.call(directiveHandlers, directiveName)) {
+ directiveHandlers[directiveName](state, directiveName, directiveArgs);
+ } else {
+ throwWarning(state, 'unknown document directive "' + directiveName + '"');
+ }
+ }
+
+ skipSeparationSpace(state, true, -1);
+
+ if (state.lineIndent === 0 &&
+ state.input.charCodeAt(state.position) === 0x2D/* - */ &&
+ state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&
+ state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {
+ state.position += 3;
+ skipSeparationSpace(state, true, -1);
+
+ } else if (hasDirectives) {
+ throwError(state, 'directives end mark is expected');
+ }
+
+ composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);
+ skipSeparationSpace(state, true, -1);
+
+ if (state.checkLineBreaks &&
+ PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {
+ throwWarning(state, 'non-ASCII line breaks are interpreted as content');
+ }
+
+ state.documents.push(state.result);
+
+ if (state.position === state.lineStart && testDocumentSeparator(state)) {
+
+ if (state.input.charCodeAt(state.position) === 0x2E/* . */) {
+ state.position += 3;
+ skipSeparationSpace(state, true, -1);
+ }
+ return;
+ }
+
+ if (state.position < (state.length - 1)) {
+ throwError(state, 'end of the stream or a document separator is expected');
+ } else {
+ return;
+ }
+}
+
+
+function loadDocuments(input, options) {
+ input = String(input);
+ options = options || {};
+
+ if (input.length !== 0) {
+
+ // Add tailing `\n` if not exists
+ if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&
+ input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {
+ input += '\n';
+ }
+
+ // Strip BOM
+ if (input.charCodeAt(0) === 0xFEFF) {
+ input = input.slice(1);
+ }
+ }
+
+ var state = new State(input, options);
+
+ // Use 0 as string terminator. That significantly simplifies bounds check.
+ state.input += '\0';
+
+ while (state.input.charCodeAt(state.position) === 0x20/* Space */) {
+ state.lineIndent += 1;
+ state.position += 1;
+ }
+
+ while (state.position < (state.length - 1)) {
+ readDocument(state);
+ }
+
+ return state.documents;
+}
+
+
+function loadAll$1(input, iterator, options) {
+ var documents = loadDocuments(input, options), index, length;
+
+ for (index = 0, length = documents.length; index < length; index += 1) {
+ iterator(documents[index]);
+ }
+}
+
+
+function load$1(input, options) {
+ var documents = loadDocuments(input, options);
+
+ if (documents.length === 0) {
+ /*eslint-disable no-undefined*/
+ return undefined;
+ } else if (documents.length === 1) {
+ return documents[0];
+ }
+ throw new YAMLException$1('expected a single document in the stream, but found more');
+}
+
+
+function safeLoadAll$1(input, output, options) {
+ loadAll$1(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA$1 }, options));
+}
+
+
+function safeLoad$1(input, options) {
+ return load$1(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA$1 }, options));
+}
+
+
+var loadAll_1 = loadAll$1;
+var load_1 = load$1;
+var safeLoadAll_1 = safeLoadAll$1;
+var safeLoad_1 = safeLoad$1;
+
+var loader$1 = {
+ loadAll: loadAll_1,
+ load: load_1,
+ safeLoadAll: safeLoadAll_1,
+ safeLoad: safeLoad_1
+};
+
+var common$7 = common$1;
+var YAMLException$5 = exception;
+var DEFAULT_FULL_SCHEMA$2 = default_full;
+var DEFAULT_SAFE_SCHEMA$2 = default_safe;
+
+var _toString$2 = Object.prototype.toString;
+var _hasOwnProperty$3 = Object.prototype.hasOwnProperty;
+
+var CHAR_TAB = 0x09; /* Tab */
+var CHAR_LINE_FEED = 0x0A; /* LF */
+var CHAR_SPACE = 0x20; /* Space */
+var CHAR_EXCLAMATION = 0x21; /* ! */
+var CHAR_DOUBLE_QUOTE = 0x22; /* " */
+var CHAR_SHARP = 0x23; /* # */
+var CHAR_PERCENT = 0x25; /* % */
+var CHAR_AMPERSAND = 0x26; /* & */
+var CHAR_SINGLE_QUOTE = 0x27; /* ' */
+var CHAR_ASTERISK = 0x2A; /* * */
+var CHAR_COMMA = 0x2C; /* , */
+var CHAR_MINUS = 0x2D; /* - */
+var CHAR_COLON = 0x3A; /* : */
+var CHAR_GREATER_THAN = 0x3E; /* > */
+var CHAR_QUESTION = 0x3F; /* ? */
+var CHAR_COMMERCIAL_AT = 0x40; /* @ */
+var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */
+var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */
+var CHAR_GRAVE_ACCENT = 0x60; /* ` */
+var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */
+var CHAR_VERTICAL_LINE = 0x7C; /* | */
+var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */
+
+var ESCAPE_SEQUENCES = {};
+
+ESCAPE_SEQUENCES[0x00] = '\\0';
+ESCAPE_SEQUENCES[0x07] = '\\a';
+ESCAPE_SEQUENCES[0x08] = '\\b';
+ESCAPE_SEQUENCES[0x09] = '\\t';
+ESCAPE_SEQUENCES[0x0A] = '\\n';
+ESCAPE_SEQUENCES[0x0B] = '\\v';
+ESCAPE_SEQUENCES[0x0C] = '\\f';
+ESCAPE_SEQUENCES[0x0D] = '\\r';
+ESCAPE_SEQUENCES[0x1B] = '\\e';
+ESCAPE_SEQUENCES[0x22] = '\\"';
+ESCAPE_SEQUENCES[0x5C] = '\\\\';
+ESCAPE_SEQUENCES[0x85] = '\\N';
+ESCAPE_SEQUENCES[0xA0] = '\\_';
+ESCAPE_SEQUENCES[0x2028] = '\\L';
+ESCAPE_SEQUENCES[0x2029] = '\\P';
+
+var DEPRECATED_BOOLEANS_SYNTAX = [
+ 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',
+ 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'
+];
+
+function compileStyleMap(schema, map) {
+ var result, keys, index, length, tag, style, type;
+
+ if (map === null) { return {}; }
+
+ result = {};
+ keys = Object.keys(map);
+
+ for (index = 0, length = keys.length; index < length; index += 1) {
+ tag = keys[index];
+ style = String(map[tag]);
+
+ if (tag.slice(0, 2) === '!!') {
+ tag = 'tag:yaml.org,2002:' + tag.slice(2);
+ }
+ type = schema.compiledTypeMap['fallback'][tag];
+
+ if (type && _hasOwnProperty$3.call(type.styleAliases, style)) {
+ style = type.styleAliases[style];
+ }
+
+ result[tag] = style;
+ }
+
+ return result;
+}
+
+function encodeHex(character) {
+ var string, handle, length;
+
+ string = character.toString(16).toUpperCase();
+
+ if (character <= 0xFF) {
+ handle = 'x';
+ length = 2;
+ } else if (character <= 0xFFFF) {
+ handle = 'u';
+ length = 4;
+ } else if (character <= 0xFFFFFFFF) {
+ handle = 'U';
+ length = 8;
+ } else {
+ throw new YAMLException$5('code point within a string may not be greater than 0xFFFFFFFF');
+ }
+
+ return '\\' + handle + common$7.repeat('0', length - string.length) + string;
+}
+
+function State$1(options) {
+ this.schema = options['schema'] || DEFAULT_FULL_SCHEMA$2;
+ this.indent = Math.max(1, (options['indent'] || 2));
+ this.skipInvalid = options['skipInvalid'] || false;
+ this.flowLevel = (common$7.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);
+ this.styleMap = compileStyleMap(this.schema, options['styles'] || null);
+ this.sortKeys = options['sortKeys'] || false;
+ this.lineWidth = options['lineWidth'] || 80;
+ this.noRefs = options['noRefs'] || false;
+ this.noCompatMode = options['noCompatMode'] || false;
+
+ this.implicitTypes = this.schema.compiledImplicit;
+ this.explicitTypes = this.schema.compiledExplicit;
+
+ this.tag = null;
+ this.result = '';
+
+ this.duplicates = [];
+ this.usedDuplicates = null;
+}
+
+// Indents every line in a string. Empty lines (\n only) are not indented.
+function indentString(string, spaces) {
+ var ind = common$7.repeat(' ', spaces),
+ position = 0,
+ next = -1,
+ result = '',
+ line,
+ length = string.length;
+
+ while (position < length) {
+ next = string.indexOf('\n', position);
+ if (next === -1) {
+ line = string.slice(position);
+ position = length;
+ } else {
+ line = string.slice(position, next + 1);
+ position = next + 1;
+ }
+
+ if (line.length && line !== '\n') { result += ind; }
+
+ result += line;
+ }
+
+ return result;
+}
+
+function generateNextLine(state, level) {
+ return '\n' + common$7.repeat(' ', state.indent * level);
+}
+
+function testImplicitResolving(state, str) {
+ var index, length, type;
+
+ for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {
+ type = state.implicitTypes[index];
+
+ if (type.resolve(str)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// [33] s-white ::= s-space | s-tab
+function isWhitespace(c) {
+ return c === CHAR_SPACE || c === CHAR_TAB;
+}
+
+// Returns true if the character can be printed without escaping.
+// From YAML 1.2: "any allowed characters known to be non-printable
+// should also be escaped. [However,] This isn’t mandatory"
+// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029.
+function isPrintable(c) {
+ return (0x00020 <= c && c <= 0x00007E)
+ || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)
+ || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)
+ || (0x10000 <= c && c <= 0x10FFFF);
+}
+
+// Simplified test for values allowed after the first character in plain style.
+function isPlainSafe(c) {
+ // Uses a subset of nb-char - c-flow-indicator - ":" - "#"
+ // where nb-char ::= c-printable - b-char - c-byte-order-mark.
+ return isPrintable(c) && c !== 0xFEFF
+ // - c-flow-indicator
+ && c !== CHAR_COMMA
+ && c !== CHAR_LEFT_SQUARE_BRACKET
+ && c !== CHAR_RIGHT_SQUARE_BRACKET
+ && c !== CHAR_LEFT_CURLY_BRACKET
+ && c !== CHAR_RIGHT_CURLY_BRACKET
+ // - ":" - "#"
+ && c !== CHAR_COLON
+ && c !== CHAR_SHARP;
+}
+
+// Simplified test for values allowed as the first character in plain style.
+function isPlainSafeFirst(c) {
+ // Uses a subset of ns-char - c-indicator
+ // where ns-char = nb-char - s-white.
+ return isPrintable(c) && c !== 0xFEFF
+ && !isWhitespace(c) // - s-white
+ // - (c-indicator ::=
+ // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”
+ && c !== CHAR_MINUS
+ && c !== CHAR_QUESTION
+ && c !== CHAR_COLON
+ && c !== CHAR_COMMA
+ && c !== CHAR_LEFT_SQUARE_BRACKET
+ && c !== CHAR_RIGHT_SQUARE_BRACKET
+ && c !== CHAR_LEFT_CURLY_BRACKET
+ && c !== CHAR_RIGHT_CURLY_BRACKET
+ // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “"”
+ && c !== CHAR_SHARP
+ && c !== CHAR_AMPERSAND
+ && c !== CHAR_ASTERISK
+ && c !== CHAR_EXCLAMATION
+ && c !== CHAR_VERTICAL_LINE
+ && c !== CHAR_GREATER_THAN
+ && c !== CHAR_SINGLE_QUOTE
+ && c !== CHAR_DOUBLE_QUOTE
+ // | “%” | “@” | “`”)
+ && c !== CHAR_PERCENT
+ && c !== CHAR_COMMERCIAL_AT
+ && c !== CHAR_GRAVE_ACCENT;
+}
+
+var STYLE_PLAIN = 1;
+var STYLE_SINGLE = 2;
+var STYLE_LITERAL = 3;
+var STYLE_FOLDED = 4;
+var STYLE_DOUBLE = 5;
+
+// Determines which scalar styles are possible and returns the preferred style.
+// lineWidth = -1 => no limit.
+// Pre-conditions: str.length > 0.
+// Post-conditions:
+// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string.
+// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).
+// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).
+function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {
+ var i;
+ var char;
+ var hasLineBreak = false;
+ var hasFoldableLine = false; // only checked if shouldTrackWidth
+ var shouldTrackWidth = lineWidth !== -1;
+ var previousLineBreak = -1; // count the first line correctly
+ var plain = isPlainSafeFirst(string.charCodeAt(0))
+ && !isWhitespace(string.charCodeAt(string.length - 1));
+
+ if (singleLineOnly) {
+ // Case: no block styles.
+ // Check for disallowed characters to rule out plain and single.
+ for (i = 0; i < string.length; i++) {
+ char = string.charCodeAt(i);
+ if (!isPrintable(char)) {
+ return STYLE_DOUBLE;
+ }
+ plain = plain && isPlainSafe(char);
+ }
+ } else {
+ // Case: block styles permitted.
+ for (i = 0; i < string.length; i++) {
+ char = string.charCodeAt(i);
+ if (char === CHAR_LINE_FEED) {
+ hasLineBreak = true;
+ // Check if any line can be folded.
+ if (shouldTrackWidth) {
+ hasFoldableLine = hasFoldableLine ||
+ // Foldable line = too long, and not more-indented.
+ (i - previousLineBreak - 1 > lineWidth &&
+ string[previousLineBreak + 1] !== ' ');
+ previousLineBreak = i;
+ }
+ } else if (!isPrintable(char)) {
+ return STYLE_DOUBLE;
+ }
+ plain = plain && isPlainSafe(char);
+ }
+ // in case the end is missing a \n
+ hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&
+ (i - previousLineBreak - 1 > lineWidth &&
+ string[previousLineBreak + 1] !== ' '));
+ }
+ // Although every style can represent \n without escaping, prefer block styles
+ // for multiline, since they're more readable and they don't add empty lines.
+ // Also prefer folding a super-long line.
+ if (!hasLineBreak && !hasFoldableLine) {
+ // Strings interpretable as another type have to be quoted;
+ // e.g. the string 'true' vs. the boolean true.
+ return plain && !testAmbiguousType(string)
+ ? STYLE_PLAIN : STYLE_SINGLE;
+ }
+ // Edge case: block indentation indicator can only have one digit.
+ if (string[0] === ' ' && indentPerLevel > 9) {
+ return STYLE_DOUBLE;
+ }
+ // At this point we know block styles are valid.
+ // Prefer literal style unless we want to fold.
+ return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;
+}
+
+// Note: line breaking/folding is implemented for only the folded style.
+// NB. We drop the last trailing newline (if any) of a returned block scalar
+// since the dumper adds its own newline. This always works:
+// • No ending newline => unaffected; already using strip "-" chomping.
+// • Ending newline => removed then restored.
+// Importantly, this keeps the "+" chomp indicator from gaining an extra line.
+function writeScalar(state, string, level, iskey) {
+ state.dump = (function () {
+ if (string.length === 0) {
+ return "''";
+ }
+ if (!state.noCompatMode &&
+ DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {
+ return "'" + string + "'";
+ }
+
+ var indent = state.indent * Math.max(1, level); // no 0-indent scalars
+ // As indentation gets deeper, let the width decrease monotonically
+ // to the lower bound min(state.lineWidth, 40).
+ // Note that this implies
+ // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.
+ // state.lineWidth > 40 + state.indent: width decreases until the lower bound.
+ // This behaves better than a constant minimum width which disallows narrower options,
+ // or an indent threshold which causes the width to suddenly increase.
+ var lineWidth = state.lineWidth === -1
+ ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);
+
+ // Without knowing if keys are implicit/explicit, assume implicit for safety.
+ var singleLineOnly = iskey
+ // No block styles in flow mode.
+ || (state.flowLevel > -1 && level >= state.flowLevel);
+ function testAmbiguity(string) {
+ return testImplicitResolving(state, string);
+ }
+
+ switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {
+ case STYLE_PLAIN:
+ return string;
+ case STYLE_SINGLE:
+ return "'" + string.replace(/'/g, "''") + "'";
+ case STYLE_LITERAL:
+ return '|' + blockHeader(string, state.indent)
+ + dropEndingNewline(indentString(string, indent));
+ case STYLE_FOLDED:
+ return '>' + blockHeader(string, state.indent)
+ + dropEndingNewline(indentString(foldString(string, lineWidth), indent));
+ case STYLE_DOUBLE:
+ return '"' + escapeString(string, lineWidth) + '"';
+ default:
+ throw new YAMLException$5('impossible error: invalid scalar style');
+ }
+ }());
+}
+
+// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.
+function blockHeader(string, indentPerLevel) {
+ var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';
+
+ // note the special case: the string '\n' counts as a "trailing" empty line.
+ var clip = string[string.length - 1] === '\n';
+ var keep = clip && (string[string.length - 2] === '\n' || string === '\n');
+ var chomp = keep ? '+' : (clip ? '' : '-');
+
+ return indentIndicator + chomp + '\n';
+}
+
+// (See the note for writeScalar.)
+function dropEndingNewline(string) {
+ return string[string.length - 1] === '\n' ? string.slice(0, -1) : string;
+}
+
+// Note: a long line without a suitable break point will exceed the width limit.
+// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.
+function foldString(string, width) {
+ // In folded style, $k$ consecutive newlines output as $k+1$ newlines—
+ // unless they're before or after a more-indented line, or at the very
+ // beginning or end, in which case $k$ maps to $k$.
+ // Therefore, parse each chunk as newline(s) followed by a content line.
+ var lineRe = /(\n+)([^\n]*)/g;
+
+ // first line (possibly an empty line)
+ var result = (function () {
+ var nextLF = string.indexOf('\n');
+ nextLF = nextLF !== -1 ? nextLF : string.length;
+ lineRe.lastIndex = nextLF;
+ return foldLine(string.slice(0, nextLF), width);
+ }());
+ // If we haven't reached the first content line yet, don't add an extra \n.
+ var prevMoreIndented = string[0] === '\n' || string[0] === ' ';
+ var moreIndented;
+
+ // rest of the lines
+ var match;
+ while ((match = lineRe.exec(string))) {
+ var prefix = match[1], line = match[2];
+ moreIndented = (line[0] === ' ');
+ result += prefix
+ + (!prevMoreIndented && !moreIndented && line !== ''
+ ? '\n' : '')
+ + foldLine(line, width);
+ prevMoreIndented = moreIndented;
+ }
+
+ return result;
+}
+
+// Greedy line breaking.
+// Picks the longest line under the limit each time,
+// otherwise settles for the shortest line over the limit.
+// NB. More-indented lines *cannot* be folded, as that would add an extra \n.
+function foldLine(line, width) {
+ if (line === '' || line[0] === ' ') { return line; }
+
+ // Since a more-indented line adds a \n, breaks can't be followed by a space.
+ var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.
+ var match;
+ // start is an inclusive index. end, curr, and next are exclusive.
+ var start = 0, end, curr = 0, next = 0;
+ var result = '';
+
+ // Invariants: 0 <= start <= length-1.
+ // 0 <= curr <= next <= max(0, length-2). curr - start <= width.
+ // Inside the loop:
+ // A match implies length >= 2, so curr and next are <= length-2.
+ while ((match = breakRe.exec(line))) {
+ next = match.index;
+ // maintain invariant: curr - start <= width
+ if (next - start > width) {
+ end = (curr > start) ? curr : next; // derive end <= length-2
+ result += '\n' + line.slice(start, end);
+ // skip the space that was output as \n
+ start = end + 1; // derive start <= length-1
+ }
+ curr = next;
+ }
+
+ // By the invariants, start <= length-1, so there is something left over.
+ // It is either the whole string or a part starting from non-whitespace.
+ result += '\n';
+ // Insert a break if the remainder is too long and there is a break available.
+ if (line.length - start > width && curr > start) {
+ result += line.slice(start, curr) + '\n' + line.slice(curr + 1);
+ } else {
+ result += line.slice(start);
+ }
+
+ return result.slice(1); // drop extra \n joiner
+}
+
+// Escapes a double-quoted string.
+function escapeString(string) {
+ var result = '';
+ var char;
+ var escapeSeq;
+
+ for (var i = 0; i < string.length; i++) {
+ char = string.charCodeAt(i);
+ escapeSeq = ESCAPE_SEQUENCES[char];
+ result += !escapeSeq && isPrintable(char)
+ ? string[i]
+ : escapeSeq || encodeHex(char);
+ }
+
+ return result;
+}
+
+function writeFlowSequence(state, level, object) {
+ var _result = '',
+ _tag = state.tag,
+ index,
+ length;
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ // Write only valid elements.
+ if (writeNode(state, level, object[index], false, false)) {
+ if (index !== 0) { _result += ', '; }
+ _result += state.dump;
+ }
+ }
+
+ state.tag = _tag;
+ state.dump = '[' + _result + ']';
+}
+
+function writeBlockSequence(state, level, object, compact) {
+ var _result = '',
+ _tag = state.tag,
+ index,
+ length;
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ // Write only valid elements.
+ if (writeNode(state, level + 1, object[index], true, true)) {
+ if (!compact || index !== 0) {
+ _result += generateNextLine(state, level);
+ }
+ _result += '- ' + state.dump;
+ }
+ }
+
+ state.tag = _tag;
+ state.dump = _result || '[]'; // Empty sequence if no valid values.
+}
+
+function writeFlowMapping(state, level, object) {
+ var _result = '',
+ _tag = state.tag,
+ objectKeyList = Object.keys(object),
+ index,
+ length,
+ objectKey,
+ objectValue,
+ pairBuffer;
+
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+ pairBuffer = '';
+
+ if (index !== 0) { pairBuffer += ', '; }
+
+ objectKey = objectKeyList[index];
+ objectValue = object[objectKey];
+
+ if (!writeNode(state, level, objectKey, false, false)) {
+ continue; // Skip this pair because of invalid key;
+ }
+
+ if (state.dump.length > 1024) { pairBuffer += '? '; }
+
+ pairBuffer += state.dump + ': ';
+
+ if (!writeNode(state, level, objectValue, false, false)) {
+ continue; // Skip this pair because of invalid value.
+ }
+
+ pairBuffer += state.dump;
+
+ // Both key and value are valid.
+ _result += pairBuffer;
+ }
+
+ state.tag = _tag;
+ state.dump = '{' + _result + '}';
+}
+
+function writeBlockMapping(state, level, object, compact) {
+ var _result = '',
+ _tag = state.tag,
+ objectKeyList = Object.keys(object),
+ index,
+ length,
+ objectKey,
+ objectValue,
+ explicitPair,
+ pairBuffer;
+
+ // Allow sorting keys so that the output file is deterministic
+ if (state.sortKeys === true) {
+ // Default sorting
+ objectKeyList.sort();
+ } else if (typeof state.sortKeys === 'function') {
+ // Custom sort function
+ objectKeyList.sort(state.sortKeys);
+ } else if (state.sortKeys) {
+ // Something is wrong
+ throw new YAMLException$5('sortKeys must be a boolean or a function');
+ }
+
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+ pairBuffer = '';
+
+ if (!compact || index !== 0) {
+ pairBuffer += generateNextLine(state, level);
+ }
+
+ objectKey = objectKeyList[index];
+ objectValue = object[objectKey];
+
+ if (!writeNode(state, level + 1, objectKey, true, true, true)) {
+ continue; // Skip this pair because of invalid key.
+ }
+
+ explicitPair = (state.tag !== null && state.tag !== '?') ||
+ (state.dump && state.dump.length > 1024);
+
+ if (explicitPair) {
+ if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
+ pairBuffer += '?';
+ } else {
+ pairBuffer += '? ';
+ }
+ }
+
+ pairBuffer += state.dump;
+
+ if (explicitPair) {
+ pairBuffer += generateNextLine(state, level);
+ }
+
+ if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {
+ continue; // Skip this pair because of invalid value.
+ }
+
+ if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
+ pairBuffer += ':';
+ } else {
+ pairBuffer += ': ';
+ }
+
+ pairBuffer += state.dump;
+
+ // Both key and value are valid.
+ _result += pairBuffer;
+ }
+
+ state.tag = _tag;
+ state.dump = _result || '{}'; // Empty mapping if no valid pairs.
+}
+
+function detectType(state, object, explicit) {
+ var _result, typeList, index, length, type, style;
+
+ typeList = explicit ? state.explicitTypes : state.implicitTypes;
+
+ for (index = 0, length = typeList.length; index < length; index += 1) {
+ type = typeList[index];
+
+ if ((type.instanceOf || type.predicate) &&
+ (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&
+ (!type.predicate || type.predicate(object))) {
+
+ state.tag = explicit ? type.tag : '?';
+
+ if (type.represent) {
+ style = state.styleMap[type.tag] || type.defaultStyle;
+
+ if (_toString$2.call(type.represent) === '[object Function]') {
+ _result = type.represent(object, style);
+ } else if (_hasOwnProperty$3.call(type.represent, style)) {
+ _result = type.represent[style](object, style);
+ } else {
+ throw new YAMLException$5('!<' + type.tag + '> tag resolver accepts not "' + style + '" style');
+ }
+
+ state.dump = _result;
+ }
+
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// Serializes `object` and writes it to global `result`.
+// Returns true on success, or false on invalid object.
+//
+function writeNode(state, level, object, block, compact, iskey) {
+ state.tag = null;
+ state.dump = object;
+
+ if (!detectType(state, object, false)) {
+ detectType(state, object, true);
+ }
+
+ var type = _toString$2.call(state.dump);
+
+ if (block) {
+ block = (state.flowLevel < 0 || state.flowLevel > level);
+ }
+
+ var objectOrArray = type === '[object Object]' || type === '[object Array]',
+ duplicateIndex,
+ duplicate;
+
+ if (objectOrArray) {
+ duplicateIndex = state.duplicates.indexOf(object);
+ duplicate = duplicateIndex !== -1;
+ }
+
+ if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {
+ compact = false;
+ }
+
+ if (duplicate && state.usedDuplicates[duplicateIndex]) {
+ state.dump = '*ref_' + duplicateIndex;
+ } else {
+ if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {
+ state.usedDuplicates[duplicateIndex] = true;
+ }
+ if (type === '[object Object]') {
+ if (block && (Object.keys(state.dump).length !== 0)) {
+ writeBlockMapping(state, level, state.dump, compact);
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + state.dump;
+ }
+ } else {
+ writeFlowMapping(state, level, state.dump);
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
+ }
+ }
+ } else if (type === '[object Array]') {
+ if (block && (state.dump.length !== 0)) {
+ writeBlockSequence(state, level, state.dump, compact);
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + state.dump;
+ }
+ } else {
+ writeFlowSequence(state, level, state.dump);
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
+ }
+ }
+ } else if (type === '[object String]') {
+ if (state.tag !== '?') {
+ writeScalar(state, state.dump, level, iskey);
+ }
+ } else {
+ if (state.skipInvalid) { return false; }
+ throw new YAMLException$5('unacceptable kind of an object to dump ' + type);
+ }
+
+ if (state.tag !== null && state.tag !== '?') {
+ state.dump = '!<' + state.tag + '> ' + state.dump;
+ }
+ }
+
+ return true;
+}
+
+function getDuplicateReferences(object, state) {
+ var objects = [],
+ duplicatesIndexes = [],
+ index,
+ length;
+
+ inspectNode(object, objects, duplicatesIndexes);
+
+ for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {
+ state.duplicates.push(objects[duplicatesIndexes[index]]);
+ }
+ state.usedDuplicates = new Array(length);
+}
+
+function inspectNode(object, objects, duplicatesIndexes) {
+ var objectKeyList,
+ index,
+ length;
+
+ if (object !== null && typeof object === 'object') {
+ index = objects.indexOf(object);
+ if (index !== -1) {
+ if (duplicatesIndexes.indexOf(index) === -1) {
+ duplicatesIndexes.push(index);
+ }
+ } else {
+ objects.push(object);
+
+ if (Array.isArray(object)) {
+ for (index = 0, length = object.length; index < length; index += 1) {
+ inspectNode(object[index], objects, duplicatesIndexes);
+ }
+ } else {
+ objectKeyList = Object.keys(object);
+
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+ inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);
+ }
+ }
+ }
+ }
+}
+
+function dump$1(input, options) {
+ options = options || {};
+
+ var state = new State$1(options);
+
+ if (!state.noRefs) { getDuplicateReferences(input, state); }
+
+ if (writeNode(state, 0, input, true, true)) { return state.dump + '\n'; }
+
+ return '';
+}
+
+function safeDump$1(input, options) {
+ return dump$1(input, common$7.extend({ schema: DEFAULT_SAFE_SCHEMA$2 }, options));
+}
+
+var dump_1 = dump$1;
+var safeDump_1 = safeDump$1;
+
+var dumper$1 = {
+ dump: dump_1,
+ safeDump: safeDump_1
+};
+
+var loader = loader$1;
+var dumper = dumper$1;
+
+
+function deprecated(name) {
+ return function () {
+ throw new Error('Function ' + name + ' is deprecated and cannot be used.');
+ };
+}
+
+
+var Type = type;
+var Schema = schema;
+var FAILSAFE_SCHEMA = failsafe;
+var JSON_SCHEMA = json;
+var CORE_SCHEMA = core;
+var DEFAULT_SAFE_SCHEMA = default_safe;
+var DEFAULT_FULL_SCHEMA = default_full;
+var load = loader.load;
+var loadAll = loader.loadAll;
+var safeLoad = loader.safeLoad;
+var safeLoadAll = loader.safeLoadAll;
+var dump = dumper.dump;
+var safeDump = dumper.safeDump;
+var YAMLException = exception;
+
+// Deprecated schema names from JS-YAML 2.0.x
+var MINIMAL_SCHEMA = failsafe;
+var SAFE_SCHEMA = default_safe;
+var DEFAULT_SCHEMA = default_full;
+
+// Deprecated functions from JS-YAML 1.x.x
+var scan = deprecated('scan');
+var parse = deprecated('parse');
+var compose = deprecated('compose');
+var addConstructor = deprecated('addConstructor');
+
+var jsYaml = {
+ Type: Type,
+ Schema: Schema,
+ FAILSAFE_SCHEMA: FAILSAFE_SCHEMA,
+ JSON_SCHEMA: JSON_SCHEMA,
+ CORE_SCHEMA: CORE_SCHEMA,
+ DEFAULT_SAFE_SCHEMA: DEFAULT_SAFE_SCHEMA,
+ DEFAULT_FULL_SCHEMA: DEFAULT_FULL_SCHEMA,
+ load: load,
+ loadAll: loadAll,
+ safeLoad: safeLoad,
+ safeLoadAll: safeLoadAll,
+ dump: dump,
+ safeDump: safeDump,
+ YAMLException: YAMLException,
+ MINIMAL_SCHEMA: MINIMAL_SCHEMA,
+ SAFE_SCHEMA: SAFE_SCHEMA,
+ DEFAULT_SCHEMA: DEFAULT_SCHEMA,
+ scan: scan,
+ parse: parse,
+ compose: compose,
+ addConstructor: addConstructor
+};
+
+var yaml = jsYaml;
+
+
+var index = yaml;
+
+class FrontMatter extends HTMLElement {
+ static get is() { return "d-front-matter"; }
+ constructor() {
+ super();
+ this.data = {};
+ }
+ connectedCallback() {
+ var el = this.querySelector("script");
+ if (el) {
+ var text = el.textContent;
+ this.parse(index.safeLoad(text));
+ }
+ }
+ parse(localData) {
+ this.data.title = localData.title ? localData.title : "Untitled";
+ this.data.description = localData.description ? localData.description : "No description.";
+
+ this.data.authors = localData.authors ? localData.authors : [];
+
+ this.data.authors = this.data.authors.map(function (author, i) {
+ var a = {};
+ var name = Object.keys(author)[0];
+ if ((typeof author) === "string") {
+ name = author;
+ } else {
+ a.personalURL = author[name];
+ }
+ var names = name.split(" ");
+ a.name = name;
+ a.firstName = names.slice(0, names.length - 1).join(" ");
+ a.lastName = names[names.length -1];
+ if(localData.affiliations[i]) {
+ var affiliation = Object.keys(localData.affiliations[i])[0];
+ if ((typeof localData.affiliations[i]) === "string") {
+ affiliation = localData.affiliations[i];
+ } else {
+ a.affiliationURL = localData.affiliations[i][affiliation];
+ }
+ a.affiliation = affiliation;
+ }
+ return a;
+ });
+ }
+}
+
+customElements.define(FrontMatter.is, FrontMatter);
+
+var dFrontMatter = Object.freeze({
+ default: FrontMatter
+});
+
+// import '@webcomponents/shadycss/scoping-shim';
+
+var Template = function (name, templateString, useShadow) {
+ if ( useShadow === void 0 ) useShadow = true;
+
+ var template = document.createElement('template');
+ template.innerHTML = templateString;
+ // ShadyCSS.prepareTemplate(template, name);
+
+ return function (superclass) {
+ return class extends superclass {
+ constructor() {
+ super();
+ this.clone = document.importNode(template.content, true);
+ if (useShadow) {
+ // ShadyCSS.applyStyle(this);
+ this.shadow_ = this.attachShadow({mode: 'open'});
+ this.shadow_.appendChild(clone);
+ }
+ }
+ connectedCallback() {
+ if (!useShadow) {
+ this.insertBefore(this.clone, this.firstChild);
+ }
+ }
+ get root() {
+ if (useShadow) {
+ return this.shadow_;
+ }
+ return this;
+ }
+ $(query) {
+ return this.root.querySelector(query);
+ }
+ $$(query) {
+ return this.root.querySelectorAll(query);
+ }
+ }
+ }
+};
+
+function body(selector) {
+ return `${selector} {
+ width: auto;
+ margin-left: 24px;
+ margin-right: 24px;
+ box-sizing: border-box;
+ }
+ @media(min-width: 768px) {
+ ${selector} {
+ margin-left: 72px;
+ margin-right: 72px;
+ }
+ }
+ @media(min-width: 1080px) {
+ ${selector} {
+ margin-left: calc(50% - 984px / 2);
+ width: 648px;
+ }
+ }
+ `;
+}
+
+function page(selector) {
+ return `${selector} {
+ width: auto;
+ margin-left: 24px;
+ margin-right: 24px;
+ box-sizing: border-box;
+ }
+ @media(min-width: 768px) {
+ ${selector} {
+ margin-left: 72px;
+ margin-right: 72px;
+ }
+ }
+ @media(min-width: 1080px) {
+ ${selector} {
+ width: 984px;
+ margin-left: auto;
+ margin-right: auto;
+ }
+ }
+ `;
+}
+
+var T = Template("d-title", `
+
+`, false);
+
+class Title extends T(HTMLElement) {
+ static get is() { return "d-title"; }
+ connectedCallback() {
+ super.connectedCallback();
+ this.byline = document.createElement("d-byline");
+ var frontMatter = document.querySelector("d-front-matter");
+ this.byline.render(frontMatter.data);
+ this.appendChild(this.byline);
+ }
+}
+
+customElements.define(Title.is, Title);
+
+
+var dTitle = Object.freeze({
+ default: Title
+});
+
+var mustache = createCommonjsModule(function (module, exports) {
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+
+/*global define: false Mustache: true*/
+
+(function defineMustache (global, factory) {
+ if ('object' === 'object' && exports && typeof exports.nodeName !== 'string') {
+ factory(exports); // CommonJS
+ } else if (typeof undefined === 'function' && undefined.amd) {
+ undefined(['exports'], factory); // AMD
+ } else {
+ global.Mustache = {};
+ factory(global.Mustache); // script, wsh, asp
+ }
+}(commonjsGlobal, function mustacheFactory (mustache) {
+
+ var objectToString = Object.prototype.toString;
+ var isArray = Array.isArray || function isArrayPolyfill (object) {
+ return objectToString.call(object) === '[object Array]';
+ };
+
+ function isFunction (object) {
+ return typeof object === 'function';
+ }
+
+ /**
+ * More correct typeof string handling array
+ * which normally returns typeof 'object'
+ */
+ function typeStr (obj) {
+ return isArray(obj) ? 'array' : typeof obj;
+ }
+
+ function escapeRegExp (string) {
+ return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&');
+ }
+
+ /**
+ * Null safe way of checking whether or not an object,
+ * including its prototype, has a given property
+ */
+ function hasProperty (obj, propName) {
+ return obj != null && typeof obj === 'object' && (propName in obj);
+ }
+
+ // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577
+ // See https://github.com/janl/mustache.js/issues/189
+ var regExpTest = RegExp.prototype.test;
+ function testRegExp (re, string) {
+ return regExpTest.call(re, string);
+ }
+
+ var nonSpaceRe = /\S/;
+ function isWhitespace (string) {
+ return !testRegExp(nonSpaceRe, string);
+ }
+
+ var entityMap = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": ''',
+ '/': '/',
+ '`': '`',
+ '=': '='
+ };
+
+ function escapeHtml (string) {
+ return String(string).replace(/[&<>"'`=\/]/g, function fromEntityMap (s) {
+ return entityMap[s];
+ });
+ }
+
+ var whiteRe = /\s*/;
+ var spaceRe = /\s+/;
+ var equalsRe = /\s*=/;
+ var curlyRe = /\s*\}/;
+ var tagRe = /#|\^|\/|>|\{|&|=|!/;
+
+ /**
+ * Breaks up the given `template` string into a tree of tokens. If the `tags`
+ * argument is given here it must be an array with two string values: the
+ * opening and closing tags used in the template (e.g. [ "<%", "%>" ]). Of
+ * course, the default is to use mustaches (i.e. mustache.tags).
+ *
+ * A token is an array with at least 4 elements. The first element is the
+ * mustache symbol that was used inside the tag, e.g. "#" or "&". If the tag
+ * did not contain a symbol (i.e. {{myValue}}) this element is "name". For
+ * all text that appears outside a symbol this element is "text".
+ *
+ * The second element of a token is its "value". For mustache tags this is
+ * whatever else was inside the tag besides the opening symbol. For text tokens
+ * this is the text itself.
+ *
+ * The third and fourth elements of the token are the start and end indices,
+ * respectively, of the token in the original template.
+ *
+ * Tokens that are the root node of a subtree contain two more elements: 1) an
+ * array of tokens in the subtree and 2) the index in the original template at
+ * which the closing tag for that section begins.
+ */
+ function parseTemplate (template, tags) {
+ if (!template)
+ { return []; }
+
+ var sections = []; // Stack to hold section tokens
+ var tokens = []; // Buffer to hold the tokens
+ var spaces = []; // Indices of whitespace tokens on the current line
+ var hasTag = false; // Is there a {{tag}} on the current line?
+ var nonSpace = false; // Is there a non-space char on the current line?
+
+ // Strips all whitespace tokens array for the current line
+ // if there was a {{#tag}} on it and otherwise only space.
+ function stripSpace () {
+ if (hasTag && !nonSpace) {
+ while (spaces.length)
+ { delete tokens[spaces.pop()]; }
+ } else {
+ spaces = [];
+ }
+
+ hasTag = false;
+ nonSpace = false;
+ }
+
+ var openingTagRe, closingTagRe, closingCurlyRe;
+ function compileTags (tagsToCompile) {
+ if (typeof tagsToCompile === 'string')
+ { tagsToCompile = tagsToCompile.split(spaceRe, 2); }
+
+ if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)
+ { throw new Error('Invalid tags: ' + tagsToCompile); }
+
+ openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\s*');
+ closingTagRe = new RegExp('\\s*' + escapeRegExp(tagsToCompile[1]));
+ closingCurlyRe = new RegExp('\\s*' + escapeRegExp('}' + tagsToCompile[1]));
+ }
+
+ compileTags(tags || mustache.tags);
+
+ var scanner = new Scanner(template);
+
+ var start, type, value, chr, token, openSection;
+ while (!scanner.eos()) {
+ start = scanner.pos;
+
+ // Match any text between tags.
+ value = scanner.scanUntil(openingTagRe);
+
+ if (value) {
+ for (var i = 0, valueLength = value.length; i < valueLength; ++i) {
+ chr = value.charAt(i);
+
+ if (isWhitespace(chr)) {
+ spaces.push(tokens.length);
+ } else {
+ nonSpace = true;
+ }
+
+ tokens.push([ 'text', chr, start, start + 1 ]);
+ start += 1;
+
+ // Check for whitespace on the current line.
+ if (chr === '\n')
+ { stripSpace(); }
+ }
+ }
+
+ // Match the opening tag.
+ if (!scanner.scan(openingTagRe))
+ { break; }
+
+ hasTag = true;
+
+ // Get the tag type.
+ type = scanner.scan(tagRe) || 'name';
+ scanner.scan(whiteRe);
+
+ // Get the tag value.
+ if (type === '=') {
+ value = scanner.scanUntil(equalsRe);
+ scanner.scan(equalsRe);
+ scanner.scanUntil(closingTagRe);
+ } else if (type === '{') {
+ value = scanner.scanUntil(closingCurlyRe);
+ scanner.scan(curlyRe);
+ scanner.scanUntil(closingTagRe);
+ type = '&';
+ } else {
+ value = scanner.scanUntil(closingTagRe);
+ }
+
+ // Match the closing tag.
+ if (!scanner.scan(closingTagRe))
+ { throw new Error('Unclosed tag at ' + scanner.pos); }
+
+ token = [ type, value, start, scanner.pos ];
+ tokens.push(token);
+
+ if (type === '#' || type === '^') {
+ sections.push(token);
+ } else if (type === '/') {
+ // Check section nesting.
+ openSection = sections.pop();
+
+ if (!openSection)
+ { throw new Error('Unopened section "' + value + '" at ' + start); }
+
+ if (openSection[1] !== value)
+ { throw new Error('Unclosed section "' + openSection[1] + '" at ' + start); }
+ } else if (type === 'name' || type === '{' || type === '&') {
+ nonSpace = true;
+ } else if (type === '=') {
+ // Set the tags for the next time around.
+ compileTags(value);
+ }
+ }
+
+ // Make sure there are no open sections when we're done.
+ openSection = sections.pop();
+
+ if (openSection)
+ { throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos); }
+
+ return nestTokens(squashTokens(tokens));
+ }
+
+ /**
+ * Combines the values of consecutive text tokens in the given `tokens` array
+ * to a single token.
+ */
+ function squashTokens (tokens) {
+ var squashedTokens = [];
+
+ var token, lastToken;
+ for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
+ token = tokens[i];
+
+ if (token) {
+ if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {
+ lastToken[1] += token[1];
+ lastToken[3] = token[3];
+ } else {
+ squashedTokens.push(token);
+ lastToken = token;
+ }
+ }
+ }
+
+ return squashedTokens;
+ }
+
+ /**
+ * Forms the given array of `tokens` into a nested tree structure where
+ * tokens that represent a section have two additional items: 1) an array of
+ * all tokens that appear in that section and 2) the index in the original
+ * template that represents the end of that section.
+ */
+ function nestTokens (tokens) {
+ var nestedTokens = [];
+ var collector = nestedTokens;
+ var sections = [];
+
+ var token, section;
+ for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
+ token = tokens[i];
+
+ switch (token[0]) {
+ case '#':
+ case '^':
+ collector.push(token);
+ sections.push(token);
+ collector = token[4] = [];
+ break;
+ case '/':
+ section = sections.pop();
+ section[5] = token[2];
+ collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;
+ break;
+ default:
+ collector.push(token);
+ }
+ }
+
+ return nestedTokens;
+ }
+
+ /**
+ * A simple string scanner that is used by the template parser to find
+ * tokens in template strings.
+ */
+ function Scanner (string) {
+ this.string = string;
+ this.tail = string;
+ this.pos = 0;
+ }
+
+ /**
+ * Returns `true` if the tail is empty (end of string).
+ */
+ Scanner.prototype.eos = function eos () {
+ return this.tail === '';
+ };
+
+ /**
+ * Tries to match the given regular expression at the current position.
+ * Returns the matched text if it can match, the empty string otherwise.
+ */
+ Scanner.prototype.scan = function scan (re) {
+ var match = this.tail.match(re);
+
+ if (!match || match.index !== 0)
+ { return ''; }
+
+ var string = match[0];
+
+ this.tail = this.tail.substring(string.length);
+ this.pos += string.length;
+
+ return string;
+ };
+
+ /**
+ * Skips all text until the given regular expression can be matched. Returns
+ * the skipped string, which is the entire tail if no match can be made.
+ */
+ Scanner.prototype.scanUntil = function scanUntil (re) {
+ var index = this.tail.search(re), match;
+
+ switch (index) {
+ case -1:
+ match = this.tail;
+ this.tail = '';
+ break;
+ case 0:
+ match = '';
+ break;
+ default:
+ match = this.tail.substring(0, index);
+ this.tail = this.tail.substring(index);
+ }
+
+ this.pos += match.length;
+
+ return match;
+ };
+
+ /**
+ * Represents a rendering context by wrapping a view object and
+ * maintaining a reference to the parent context.
+ */
+ function Context (view, parentContext) {
+ this.view = view;
+ this.cache = { '.': this.view };
+ this.parent = parentContext;
+ }
+
+ /**
+ * Creates a new context using the given view with this context
+ * as the parent.
+ */
+ Context.prototype.push = function push (view) {
+ return new Context(view, this);
+ };
+
+ /**
+ * Returns the value of the given name in this context, traversing
+ * up the context hierarchy if the value is absent in this context's view.
+ */
+ Context.prototype.lookup = function lookup (name) {
+ var cache = this.cache;
+
+ var value;
+ if (cache.hasOwnProperty(name)) {
+ value = cache[name];
+ } else {
+ var context = this, names, index, lookupHit = false;
+
+ while (context) {
+ if (name.indexOf('.') > 0) {
+ value = context.view;
+ names = name.split('.');
+ index = 0;
+
+ /**
+ * Using the dot notion path in `name`, we descend through the
+ * nested objects.
+ *
+ * To be certain that the lookup has been successful, we have to
+ * check if the last object in the path actually has the property
+ * we are looking for. We store the result in `lookupHit`.
+ *
+ * This is specially necessary for when the value has been set to
+ * `undefined` and we want to avoid looking up parent contexts.
+ **/
+ while (value != null && index < names.length) {
+ if (index === names.length - 1)
+ { lookupHit = hasProperty(value, names[index]); }
+
+ value = value[names[index++]];
+ }
+ } else {
+ value = context.view[name];
+ lookupHit = hasProperty(context.view, name);
+ }
+
+ if (lookupHit)
+ { break; }
+
+ context = context.parent;
+ }
+
+ cache[name] = value;
+ }
+
+ if (isFunction(value))
+ { value = value.call(this.view); }
+
+ return value;
+ };
+
+ /**
+ * A Writer knows how to take a stream of tokens and render them to a
+ * string, given a context. It also maintains a cache of templates to
+ * avoid the need to parse the same template twice.
+ */
+ function Writer () {
+ this.cache = {};
+ }
+
+ /**
+ * Clears all cached templates in this writer.
+ */
+ Writer.prototype.clearCache = function clearCache () {
+ this.cache = {};
+ };
+
+ /**
+ * Parses and caches the given `template` and returns the array of tokens
+ * that is generated from the parse.
+ */
+ Writer.prototype.parse = function parse (template, tags) {
+ var cache = this.cache;
+ var tokens = cache[template];
+
+ if (tokens == null)
+ { tokens = cache[template] = parseTemplate(template, tags); }
+
+ return tokens;
+ };
+
+ /**
+ * High-level method that is used to render the given `template` with
+ * the given `view`.
+ *
+ * The optional `partials` argument may be an object that contains the
+ * names and templates of partials that are used in the template. It may
+ * also be a function that is used to load partial templates on the fly
+ * that takes a single argument: the name of the partial.
+ */
+ Writer.prototype.render = function render (template, view, partials) {
+ var tokens = this.parse(template);
+ var context = (view instanceof Context) ? view : new Context(view);
+ return this.renderTokens(tokens, context, partials, template);
+ };
+
+ /**
+ * Low-level method that renders the given array of `tokens` using
+ * the given `context` and `partials`.
+ *
+ * Note: The `originalTemplate` is only ever used to extract the portion
+ * of the original template that was contained in a higher-order section.
+ * If the template doesn't use higher-order sections, this argument may
+ * be omitted.
+ */
+ Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {
+ var this$1 = this;
+
+ var buffer = '';
+
+ var token, symbol, value;
+ for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
+ value = undefined;
+ token = tokens[i];
+ symbol = token[0];
+
+ if (symbol === '#') { value = this$1.renderSection(token, context, partials, originalTemplate); }
+ else if (symbol === '^') { value = this$1.renderInverted(token, context, partials, originalTemplate); }
+ else if (symbol === '>') { value = this$1.renderPartial(token, context, partials, originalTemplate); }
+ else if (symbol === '&') { value = this$1.unescapedValue(token, context); }
+ else if (symbol === 'name') { value = this$1.escapedValue(token, context); }
+ else if (symbol === 'text') { value = this$1.rawValue(token); }
+
+ if (value !== undefined)
+ { buffer += value; }
+ }
+
+ return buffer;
+ };
+
+ Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {
+ var this$1 = this;
+
+ var self = this;
+ var buffer = '';
+ var value = context.lookup(token[1]);
+
+ // This function is used to render an arbitrary template
+ // in the current context by higher-order sections.
+ function subRender (template) {
+ return self.render(template, context, partials);
+ }
+
+ if (!value) { return; }
+
+ if (isArray(value)) {
+ for (var j = 0, valueLength = value.length; j < valueLength; ++j) {
+ buffer += this$1.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);
+ }
+ } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {
+ buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);
+ } else if (isFunction(value)) {
+ if (typeof originalTemplate !== 'string')
+ { throw new Error('Cannot use higher-order sections without the original template'); }
+
+ // Extract the portion of the original template that the section contains.
+ value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);
+
+ if (value != null)
+ { buffer += value; }
+ } else {
+ buffer += this.renderTokens(token[4], context, partials, originalTemplate);
+ }
+ return buffer;
+ };
+
+ Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {
+ var value = context.lookup(token[1]);
+
+ // Use JavaScript's definition of falsy. Include empty arrays.
+ // See https://github.com/janl/mustache.js/issues/186
+ if (!value || (isArray(value) && value.length === 0))
+ { return this.renderTokens(token[4], context, partials, originalTemplate); }
+ };
+
+ Writer.prototype.renderPartial = function renderPartial (token, context, partials) {
+ if (!partials) { return; }
+
+ var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];
+ if (value != null)
+ { return this.renderTokens(this.parse(value), context, partials, value); }
+ };
+
+ Writer.prototype.unescapedValue = function unescapedValue (token, context) {
+ var value = context.lookup(token[1]);
+ if (value != null)
+ { return value; }
+ };
+
+ Writer.prototype.escapedValue = function escapedValue (token, context) {
+ var value = context.lookup(token[1]);
+ if (value != null)
+ { return mustache.escape(value); }
+ };
+
+ Writer.prototype.rawValue = function rawValue (token) {
+ return token[1];
+ };
+
+ mustache.name = 'mustache.js';
+ mustache.version = '2.3.0';
+ mustache.tags = [ '{{', '}}' ];
+
+ // All high-level mustache.* functions use this writer.
+ var defaultWriter = new Writer();
+
+ /**
+ * Clears all cached templates in the default writer.
+ */
+ mustache.clearCache = function clearCache () {
+ return defaultWriter.clearCache();
+ };
+
+ /**
+ * Parses and caches the given template in the default writer and returns the
+ * array of tokens it contains. Doing this ahead of time avoids the need to
+ * parse templates on the fly as they are rendered.
+ */
+ mustache.parse = function parse (template, tags) {
+ return defaultWriter.parse(template, tags);
+ };
+
+ /**
+ * Renders the `template` with the given `view` and `partials` using the
+ * default writer.
+ */
+ mustache.render = function render (template, view, partials) {
+ if (typeof template !== 'string') {
+ throw new TypeError('Invalid template! Template should be a "string" ' +
+ 'but "' + typeStr(template) + '" was given as the first ' +
+ 'argument for mustache#render(template, view, partials)');
+ }
+
+ return defaultWriter.render(template, view, partials);
+ };
+
+ // This is here for backwards compatibility with 0.4.x.,
+ /*eslint-disable */ // eslint wants camel cased function name
+ mustache.to_html = function to_html (template, view, partials, send) {
+ /*eslint-enable*/
+
+ var result = mustache.render(template, view, partials);
+
+ if (isFunction(send)) {
+ send(result);
+ } else {
+ return result;
+ }
+ };
+
+ // Export the escaping function so that the user may override it.
+ // See https://github.com/janl/mustache.js/issues/244
+ mustache.escape = escapeHtml;
+
+ // Export these mainly for testing, but also for advanced usage.
+ mustache.Scanner = Scanner;
+ mustache.Context = Context;
+ mustache.Writer = Writer;
+
+ return mustache;
+}));
+});
+
+var T$1 = Template("d-byline", `
+
+`, false);
+
+var mustacheTemplate = `
+
+
+ {{#authors}}
+
+ {{#personalURL}}
+
{{name}}
+ {{/personalURL}}
+ {{^personalURL}}
+
{{name}}
+ {{/personalURL}}
+ {{#affiliation}}
+ {{#affiliationURL}}
+
{{affiliation}}
+ {{/affiliationURL}}
+ {{^affiliationURL}}
+
{{affiliation}}
+ {{/affiliationURL}}
+ {{/affiliation}}
+
+ {{/authors}}
+
+
+
{{publishedMonth}}. {{publishedDay}}
+
{{publishedYear}}
+
+
+ Citation:
+ {{concatenatedAuthors}}, {{publishedYear}}
+
+
+`;
+
+class Byline extends T$1(HTMLElement) {
+ static get is() {
+ return "d-byline";
+ }
+ render(data) {
+ this.innerHTML = mustache.render(mustacheTemplate, data);
+ }
+}
+
+customElements.define(Byline.is, Byline);
+
+
+
+var dByline = Object.freeze({
+ default: Byline
+});
+
+var T$2 = Template("d-article", `
+
+`, false);
+
+class Article extends T$2(HTMLElement) {
+ static get is() { return "d-article"; }
+}
+
+customElements.define(Article.is, Article);
+
+var dArticle = Object.freeze({
+ default: Article
+});
+
+var T$3 = Template("d-abstract", `
+
+`, false);
+
+class Abstract extends T$3(HTMLElement) {
+ static get is() { return "d-abstract"; }
+}
+
+customElements.define(Abstract.is, Abstract);
+
+
+var dAbstract = Object.freeze({
+ default: Abstract
+});
+
+var T$4 = Template("d-toc", `
+
+`, false);
+
+class Toc extends T$4(HTMLElement) {
+ static get is() {
+ return "d-toc";
+ }
+}
+
+customElements.define(Toc.is, Toc);
+
+var dToc = Object.freeze({
+ default: Toc
+});
+
+var base = "html {\n font-size: 20px;\n\tline-height: 1rem;\n\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n /*background-color: hsl(223, 9%, 25%);*/\n}\n\na {\n color: #004276;\n}\n\nfigure {\n margin: 0;\n}\n\n/*\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n\tdisplay: block;\n}\nbody {\n\tline-height: 1;\n}\nol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after,\nq:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}*/\n";
+
+var layout = "/*\n Column: 60px\n Gutter: 24px\n\n Body: 648px\n - 8 columns\n - 7 gutters\n Middle: 816px\n Page: 984px\n - 12 columns\n - 11 gutters\n*/\n\n.l-body,\n.l-body-outset,\n.l-page,\n.l-page-outset,\n.l-middle,\n.l-middle-outset,\nd-article > div,\nd-article > p,\nd-article > h1,\nd-article > h2,\nd-article > h3,\nd-article > h4,\nd-article > figure,\nd-article > ul,\nd-article > d-abstract,\nd-article > d-code,\nd-article section > div,\nd-article section > p,\nd-article section > h1,\nd-article section > h2,\nd-article section > h3,\nd-article section > h4,\nd-article section > figure,\nd-article section > ul,\nd-article section > d-abstract,\nd-article section > d-code {\n width: auto;\n margin-left: 24px;\n margin-right: 24px;\n box-sizing: border-box;\n}\n\n@media(min-width: 768px) {\n .l-body,\n .l-body-outset,\n .l-page,\n .l-page-outset,\n .l-middle,\n .l-middle-outset,\n d-article > div,\n d-article > p,\n d-article > h1,\n d-article > h2,\n d-article > h3,\n d-article > h4,\n d-article > figure,\n d-article > ul,\n d-article > d-abstract,\n d-article > d-code,\n d-article section > div,\n d-article section > p,\n d-article section > h1,\n d-article section > h2,\n d-article section > h3,\n d-article section > h4,\n d-article section > figure,\n d-article section > ul,\n d-article section > d-abstract,\n d-article section > d-code {\n margin-left: 72px;\n margin-right: 72px;\n }\n}\n\n@media(min-width: 1080px) {\n .l-body,\n d-article > div,\n d-article > p,\n d-article > h2,\n d-article > h3,\n d-article > h4,\n d-article > figure,\n d-article > ul,\n d-article > d-abstract,\n d-article > d-code,\n d-article section > div,\n d-article section > p,\n d-article section > h2,\n d-article section > h3,\n d-article section > h4,\n d-article section > figure,\n d-article section > ul,\n d-article section > d-abstract,\n d-article section > d-code {\n margin-left: calc(50% - 984px / 2);\n width: 648px;\n }\n .l-body-outset,\n d-article .l-body-outset {\n margin-left: calc(50% - 984px / 2 - 96px/2);\n width: calc(648px + 96px);\n }\n .l-middle,\n d-article .l-middle {\n width: 816px;\n margin-left: calc(50% - 984px / 2);\n margin-right: auto;\n }\n .l-middle-outset,\n d-article .l-middle-outset {\n width: calc(816px + 96px);\n margin-left: calc(50% - 984px / 2 - 48px);\n margin-right: auto;\n }\n d-article > h1,\n d-article section > h1,\n .l-page,\n d-article .l-page,\n d-article.centered .l-page {\n width: 984px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-page-outset,\n d-article .l-page-outset,\n d-article.centered .l-page-outset {\n width: 1080px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-screen,\n d-article .l-screen,\n d-article.centered .l-screen {\n margin-left: auto;\n margin-right: auto;\n width: auto;\n }\n .l-screen-inset,\n d-article .l-screen-inset,\n d-article.centered .l-screen-inset {\n margin-left: 24px;\n margin-right: 24px;\n width: auto;\n }\n .l-gutter,\n d-article .l-gutter {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 24px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n width: calc((984px - 648px) / 2 - 24px);\n }\n\n /* Side */\n .side.l-body,\n d-article .side.l-body {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px) / 2);\n width: calc(648px / 2 - 24px - 84px);\n }\n .side.l-body-outset,\n d-article .side.l-body-outset {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px - 48px) / 2);\n width: calc(648px / 2 - 48px + 24px);\n }\n .side.l-middle,\n d-article .side.l-middle {\n clear: both;\n float: right;\n width: calc(456px - 84px);\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .side.l-middle-outset,\n d-article .side.l-middle-outset {\n clear: both;\n float: right;\n width: 456px;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .side.l-page,\n d-article .side.l-page {\n clear: both;\n float: right;\n margin-left: 48px;\n width: calc(624px - 84px);\n margin-right: calc((100vw - 984px) / 2);\n }\n .side.l-page-outset,\n d-article .side.l-page-outset {\n clear: both;\n float: right;\n width: 624px;\n margin-right: calc((100vw - 984px) / 2);\n }\n}\n\n\n/* Rows and Columns */\n\n.row {\n display: flex;\n}\n.column {\n flex: 1;\n box-sizing: border-box;\n margin-right: 24px;\n margin-left: 24px;\n}\n.row > .column:first-of-type {\n margin-left: 0;\n}\n.row > .column:last-of-type {\n margin-right: 0;\n}\n";
+
+var code = "/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\ncode {\n white-space: nowrap;\n background: rgba(0, 0, 0, 0.04);\n border-radius: 2px;\n padding: 4px 7px;\n font-size: 15px;\n color: rgba(0, 0, 0, 0.6);\n}\n\npre code {\n display: block;\n background: white;\n border-left: 3px solid rgba(0, 0, 0, 0.05);\n padding: 0 0 0 24px;\n}\n\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n text-shadow: 0 1px white;\n font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 1.5;\n\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n text-shadow: none;\n background: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n text-shadow: none;\n background: #b3d4fc;\n}\n\n@media print {\n code[class*=\"language-\"],\n pre[class*=\"language-\"] {\n text-shadow: none;\n }\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n overflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n white-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: slategray;\n}\n\n.token.punctuation {\n color: #999;\n}\n\n.namespace {\n opacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n color: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n color: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n color: #a67f59;\n background: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n color: #07a;\n}\n\n.token.function {\n color: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n color: #e90;\n}\n\n.token.important,\n.token.bold {\n font-weight: bold;\n}\n.token.italic {\n font-style: italic;\n}\n\n.token.entity {\n cursor: help;\n}\n";
+
+var print = "\n@media print {\n @page {\n size: 8in 11in;\n }\n html {\n }\n p, code {\n page-break-inside: avoid;\n }\n h2, h3 {\n page-break-after: avoid;\n }\n d-header {\n visibility: hidden;\n }\n d-footer {\n display: none!important;\n }\n}\n";
+
+var s = document.createElement("style");
+s.textContent = base + layout + code + print;
+document.querySelector("head").appendChild(s);
+
+
+var styles = Object.freeze({
+ default: s
+});
+
+exports.frontMatter = dFrontMatter;
+exports.title = dTitle;
+exports.byline = dByline;
+exports.article = dArticle;
+exports.abstract = dAbstract;
+exports.toc = dToc;
+exports.styles = styles;
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
+//# sourceMappingURL=components.js.map
diff --git a/dist/components.js.map b/dist/components.js.map
new file mode 100644
index 0000000..adb123d
--- /dev/null
+++ b/dist/components.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"components.js","sources":["../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/d-front-matter.js","../mixins/template.js","../components/layout.js","../components/d-title.js","../node_modules/mustache/mustache.js","../components/d-byline.js","../components/d-article.js","../components/d-abstract.js","../components/d-toc.js","../components/styles.js"],"sourcesContent":["'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default class FrontMatter extends HTMLElement {\n static get is() { return \"d-front-matter\"; }\n constructor() {\n super();\n this.data = {};\n }\n connectedCallback() {\n let el = this.querySelector(\"script\");\n if (el) {\n let text = el.textContent;\n this.parse(ymlParse.safeLoad(text));\n }\n }\n parse(localData) {\n this.data.title = localData.title ? localData.title : \"Untitled\";\n this.data.description = localData.description ? localData.description : \"No description.\";\n\n this.data.authors = localData.authors ? localData.authors : [];\n\n this.data.authors = this.data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n }\n}\n\ncustomElements.define(FrontMatter.is, FrontMatter);","// import '@webcomponents/shadycss/scoping-shim';\n\nexport const Template = (name, templateString, useShadow = true) => {\n const template = document.createElement('template');\n template.innerHTML = templateString;\n // ShadyCSS.prepareTemplate(template, name);\n\n return (superclass) => {\n return class extends superclass {\n constructor() {\n super();\n this.clone = document.importNode(template.content, true);\n if (useShadow) {\n // ShadyCSS.applyStyle(this);\n this.shadow_ = this.attachShadow({mode: 'open'});\n this.shadow_.appendChild(clone);\n }\n }\n connectedCallback() {\n if (!useShadow) {\n this.insertBefore(this.clone, this.firstChild);\n }\n }\n get root() {\n if (useShadow) {\n return this.shadow_;\n }\n return this;\n }\n $(query) {\n return this.root.querySelector(query);\n }\n $$(query) {\n return this.root.querySelectorAll(query);\n }\n }\n }\n};","\nexport function body(selector) {\n return `${selector} {\n width: auto;\n margin-left: 24px;\n margin-right: 24px;\n box-sizing: border-box;\n }\n @media(min-width: 768px) {\n ${selector} {\n margin-left: 72px;\n margin-right: 72px;\n }\n }\n @media(min-width: 1080px) {\n ${selector} {\n margin-left: calc(50% - 984px / 2);\n width: 648px;\n }\n }\n `;\n}\n\nexport function page(selector) {\n return `${selector} {\n width: auto;\n margin-left: 24px;\n margin-right: 24px;\n box-sizing: border-box;\n }\n @media(min-width: 768px) {\n ${selector} {\n margin-left: 72px;\n margin-right: 72px;\n }\n }\n @media(min-width: 1080px) {\n ${selector} {\n width: 984px;\n margin-left: auto;\n margin-right: auto;\n }\n }\n `;\n}\n\nexport function screen(selector) {\n return `${selector} {\n width: auto;\n margin-left: 24px;\n margin-right: 24px;\n box-sizing: border-box;\n }\n @media(min-width: 768px) {\n ${selector} {\n margin-left: 72px;\n margin-right: 72px;\n }\n }\n @media(min-width: 1080px) {\n ${selector} {\n margin-left: auto;\n margin-right: auto;\n width: auto;\n }\n }\n `;\n}","import {Template} from \"../mixins/template\";\nimport {body} from \"./layout\";\n\nconst T = Template(\"d-title\", `\n\n`, false);\n\nexport default class Title extends T(HTMLElement) {\n static get is() { return \"d-title\"; }\n connectedCallback() {\n super.connectedCallback();\n this.byline = document.createElement(\"d-byline\");\n let frontMatter = document.querySelector(\"d-front-matter\");\n this.byline.render(frontMatter.data);\n this.appendChild(this.byline);\n }\n}\n\ncustomElements.define(Title.is, Title);\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\nimport {Template} from \"../mixins/template\";\nimport {page} from \"./layout\";\n\nconst T = Template(\"d-byline\", `\n\n`, false);\n\nconst mustacheTemplate = `\n\n
\n {{#authors}}\n
\n {{#personalURL}}\n
{{name}}\n {{/personalURL}}\n {{^personalURL}}\n
{{name}}
\n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n
{{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
{{affiliation}}
\n {{/affiliationURL}}\n {{/affiliation}}\n
\n {{/authors}}\n
\n
\n
{{publishedMonth}}. {{publishedDay}}
\n
{{publishedYear}}
\n
\n
\n Citation:
\n {{concatenatedAuthors}}, {{publishedYear}}
\n \n
\n`;\n\nexport default class Byline extends T(HTMLElement) {\n static get is() {\n return \"d-byline\";\n }\n render(data) {\n this.innerHTML = mustache.render(mustacheTemplate, data);\n }\n}\n\ncustomElements.define(Byline.is, Byline);\n\n","import {Template} from \"../mixins/template\";\n\nconst T = Template(\"d-article\", `\n\n`, false);\n\nexport default class Article extends T(HTMLElement) {\n static get is() { return \"d-article\"; }\n}\n\ncustomElements.define(Article.is, Article);","import {Template} from \"../mixins/template\";\n\nconst T = Template(\"d-abstract\", `\n\n`, false);\n\nexport default class Abstract extends T(HTMLElement) {\n static get is() { return \"d-abstract\"; }\n}\n\ncustomElements.define(Abstract.is, Abstract);\n","import {Template} from \"../mixins/template\";\n\nconst T = Template(\"d-toc\", `\n\n`, false);\n\nexport default class Toc extends T(HTMLElement) {\n static get is() {\n return \"d-toc\";\n }\n}\n\ncustomElements.define(Toc.is, Toc);","import base from \"./styles-base.css\";\nimport layout from \"./styles-layout.css\";\nimport article from \"./styles-article.css\";\nimport code from \"./styles-code.css\";\nimport print from \"./styles-print.css\";\n\nlet s = document.createElement(\"style\");\ns.textContent = base + layout + code + print;\ndocument.querySelector(\"head\").appendChild(s);\nexport default s;"],"names":["YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","let","ymlParse","const","define","T"],"mappings":"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"}
\ No newline at end of file
diff --git a/components/dt-header.js b/distill-components/distill-header.js
similarity index 81%
rename from components/dt-header.js
rename to distill-components/distill-header.js
index 28205aa..611e978 100644
--- a/components/dt-header.js
+++ b/distill-components/distill-header.js
@@ -1,18 +1,20 @@
-import {Template} from './mixins/template';
+import {Template} from "./mixins/template";
// import logo from "./distill-logo.svg";
var logo = "";
-const T = Template('dt-header', `
+const T = Template("distill-header", `