@dashkite/joy 0.3.16 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,202 +1,284 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.words = exports.w = exports.underscores = exports.underscored = exports.underscore = exports.uncase = exports.truncate = exports.trim = exports.toUpperCase = exports.toString = exports.toLowerCase = exports.toBase = exports.titleCase = exports.template = exports.startsWith = exports.squote = exports.split = exports.snakeCase = exports.replace = exports.repeat = exports.quote = exports.parseNumber = exports.padStart = exports.padEnd = exports.pad = exports.normalize = exports.match = exports.isMatch = exports.isBlank = exports.gloss = exports.fromBase = exports.endsWith = exports.enclose = exports.elide = exports.dquote = exports.dashes = exports.dashed = exports.dash = exports.collapse = exports.capitalize = exports.camelCase = void 0;
7
-
8
- var _function = require("./function.js");
9
-
10
- var _type = require("./type.js");
11
-
12
- var _value = require("./value.js");
13
-
14
- var camelCase, capitalize, collapse, dash, dashed, dashes, dquote, elide, enclose, endsWith, fromBase, gloss, isBlank, isMatch, match, normalize, pad, padEnd, padStart, parseNumber, quote, repeat, replace, snakeCase, split, squote, startsWith, template, titleCase, toBase, toLower, toLowerCase, toString, toUpper, toUpperCase, trim, trimEnd, trimStart, truncate, uncase, underscore, underscored, underscores, w, words;
15
- exports.words = words;
16
- exports.w = w;
17
- exports.underscores = underscores;
18
- exports.underscored = underscored;
19
- exports.underscore = underscore;
20
- exports.uncase = uncase;
21
- exports.truncate = truncate;
22
- exports.trim = trim;
23
- exports.toUpperCase = toUpperCase;
24
- exports.toString = toString;
25
- exports.toLowerCase = toLowerCase;
26
- exports.toBase = toBase;
27
- exports.titleCase = titleCase;
28
- exports.template = template;
29
- exports.startsWith = startsWith;
30
- exports.squote = squote;
31
- exports.split = split;
32
- exports.snakeCase = snakeCase;
33
- exports.replace = replace;
34
- exports.repeat = repeat;
35
- exports.quote = quote;
36
- exports.parseNumber = parseNumber;
37
- exports.padStart = padStart;
38
- exports.padEnd = padEnd;
39
- exports.pad = pad;
40
- exports.normalize = normalize;
41
- exports.match = match;
42
- exports.isMatch = isMatch;
43
- exports.isBlank = isBlank;
44
- exports.gloss = gloss;
45
- exports.fromBase = fromBase;
46
- exports.endsWith = endsWith;
47
- exports.enclose = enclose;
48
- exports.elide = elide;
49
- exports.dquote = dquote;
50
- exports.dashes = dashes;
51
- exports.dashed = dashed;
52
- exports.dash = dash;
53
- exports.collapse = collapse;
54
- exports.capitalize = capitalize;
55
- exports.camelCase = camelCase;
56
-
57
- exports.toString = toString = function (x) {
58
- return x.toString();
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ camelCase: function() {
13
+ return camelCase;
14
+ },
15
+ capitalize: function() {
16
+ return capitalize;
17
+ },
18
+ collapse: function() {
19
+ return collapse;
20
+ },
21
+ dash: function() {
22
+ return dash;
23
+ },
24
+ dashed: function() {
25
+ return dashed;
26
+ },
27
+ dashes: function() {
28
+ return dashes;
29
+ },
30
+ dquote: function() {
31
+ return dquote;
32
+ },
33
+ elide: function() {
34
+ return elide;
35
+ },
36
+ enclose: function() {
37
+ return enclose;
38
+ },
39
+ endsWith: function() {
40
+ return endsWith;
41
+ },
42
+ fromBase: function() {
43
+ return fromBase;
44
+ },
45
+ gloss: function() {
46
+ return gloss;
47
+ },
48
+ hyphenate: function() {
49
+ return hyphenate;
50
+ },
51
+ interpolate: function() {
52
+ return interpolate;
53
+ },
54
+ isBlank: function() {
55
+ return isBlank;
56
+ },
57
+ isMatch: function() {
58
+ return isMatch;
59
+ },
60
+ match: function() {
61
+ return match;
62
+ },
63
+ normalize: function() {
64
+ return normalize;
65
+ },
66
+ pad: function() {
67
+ return pad;
68
+ },
69
+ padEnd: function() {
70
+ return padEnd;
71
+ },
72
+ padStart: function() {
73
+ return padStart;
74
+ },
75
+ parseNumber: function() {
76
+ return parseNumber;
77
+ },
78
+ quote: function() {
79
+ return quote;
80
+ },
81
+ repeat: function() {
82
+ return repeat;
83
+ },
84
+ replace: function() {
85
+ return replace;
86
+ },
87
+ snakeCase: function() {
88
+ return snakeCase;
89
+ },
90
+ split: function() {
91
+ return split;
92
+ },
93
+ squote: function() {
94
+ return squote;
95
+ },
96
+ startsWith: function() {
97
+ return startsWith;
98
+ },
99
+ titleCase: function() {
100
+ return titleCase;
101
+ },
102
+ toBase: function() {
103
+ return toBase;
104
+ },
105
+ toLowerCase: function() {
106
+ return toLowerCase;
107
+ },
108
+ toString: function() {
109
+ return toString;
110
+ },
111
+ toUpperCase: function() {
112
+ return toUpperCase;
113
+ },
114
+ trim: function() {
115
+ return trim;
116
+ },
117
+ truncate: function() {
118
+ return truncate;
119
+ },
120
+ uncase: function() {
121
+ return uncase;
122
+ },
123
+ underscore: function() {
124
+ return underscore;
125
+ },
126
+ underscored: function() {
127
+ return underscored;
128
+ },
129
+ underscores: function() {
130
+ return underscores;
131
+ },
132
+ w: function() {
133
+ return w;
134
+ },
135
+ words: function() {
136
+ return words;
137
+ }
138
+ });
139
+ const _function = require("./function");
140
+ const _type = require("./type");
141
+ const _value = require("./value");
142
+ var camelCase, capitalize, collapse, dash, dashed, dashes, dquote, elide, enclose, endsWith, fromBase, gloss, hyphenate, interpolate, isBlank, isMatch, match, normalize, pad, padEnd, padStart, parseNumber, quote, repeat, replace, snakeCase, split, squote, startsWith, titleCase, toBase, toLower, toLowerCase, toString, toUpper, toUpperCase, trim, trimEnd, trimStart, truncate, uncase, underscore, underscored, underscores, w, words;
143
+ toString = function(x) {
144
+ return x.toString();
59
145
  };
60
-
61
- exports.toBase = toBase = (0, _function.curry)(function (radix, number) {
62
- if ((0, _type.isNumber)(radix) && ((0, _type.isNumber)(number) || (0, _type.isBigInt)(number))) {
63
- if (2 <= radix && radix <= 36) {
64
- return number.toString(radix);
146
+ toBase = (0, _function.curry)(function(radix, number) {
147
+ if ((0, _type.isNumber)(radix) && ((0, _type.isNumber)(number) || (0, _type.isBigInt)(number))) {
148
+ if (2 <= radix && radix <= 36) {
149
+ return number.toString(radix);
150
+ } else {
151
+ throw new TypeError("toBase: radix must between 2 and 36");
152
+ }
65
153
  } else {
66
- throw new TypeError("toBase: radix must between 2 and 36");
154
+ throw new TypeError("toBase: arguments must be numbers");
67
155
  }
68
- } else {
69
- throw new TypeError("toBase: arguments must be numbers");
70
- }
71
156
  });
72
- exports.fromBase = fromBase = (0, _function.curry)(function (radix, string) {
73
- return Number.parseInt(string, radix);
157
+ fromBase = (0, _function.curry)(function(radix, string) {
158
+ return Number.parseInt(string, radix);
74
159
  });
75
-
76
- exports.parseNumber = parseNumber = function (string) {
77
- return Number(string);
160
+ parseNumber = function(string) {
161
+ return Number(string);
78
162
  };
79
-
80
- exports.match = match = (0, _function.curry)(function (pattern, string) {
81
- return string.match(pattern);
163
+ match = (0, _function.curry)(function(pattern, string) {
164
+ return string.match(pattern);
82
165
  });
83
- exports.isMatch = isMatch = (0, _function.curry)(function (pattern, string) {
84
- return pattern.test(string);
166
+ isMatch = (0, _function.curry)(function(pattern, string) {
167
+ return pattern.test(string);
85
168
  });
86
- exports.replace = replace = (0, _function.curry)(function (pattern, replacement, string) {
87
- return string.replace(pattern, replacement);
169
+ replace = (0, _function.curry)(function(pattern, replacement, string) {
170
+ return string.replace(pattern, replacement);
88
171
  });
89
- exports.toUpperCase = toUpperCase = toUpper = (0, _function.detach)(String.prototype.toUpperCase);
90
- exports.toLowerCase = toLowerCase = toLower = (0, _function.detach)(String.prototype.toLowerCase);
91
- exports.trim = trim = (0, _function.detach)(String.prototype.trim);
172
+ toUpperCase = toUpper = (0, _function.detach)(String.prototype.toUpperCase);
173
+ toLowerCase = toLower = (0, _function.detach)(String.prototype.toLowerCase);
174
+ trim = (0, _function.detach)(String.prototype.trim);
92
175
  trimStart = (0, _function.detach)(String.prototype.trimStart);
93
176
  trimEnd = (0, _function.detach)(String.prototype.trimEnd);
94
-
95
- exports.collapse = collapse = function (s) {
96
- return replace(/\s+/g, " ", trim(s));
97
- }; // adapted from https://github.com/VitorLuizC/normalize-text
98
-
99
-
100
- exports.normalize = normalize = function (string) {
101
- return string.normalize("NFKD").replace(/[\u0300-\u036F]/g, "");
177
+ collapse = function(s) {
178
+ return replace(/\s+/g, " ", trim(s));
102
179
  };
103
-
104
- exports.uncase = uncase = (0, _function.pipe)([replace(/^[A-Z]/g, function (c) {
105
- return c.toLowerCase();
106
- }), replace(/[A-Z]/g, function (c) {
107
- return ` ${c.toLowerCase()}`;
108
- }), replace(/[_-]/g, " ")]);
109
- exports.gloss = gloss = (0, _function.pipe)([normalize, collapse, toLowerCase, replace(/[^A-Za-z0-9 ]+/g, "")]);
110
- exports.camelCase = camelCase = (0, _function.pipe)([uncase, gloss, replace(/\s\w/g, (0, _function.pipe)([trim, toUpperCase]))]);
111
- exports.dashed = dashed = exports.dashes = dashes = exports.dash = dash = (0, _function.pipe)([uncase, gloss, replace(/\s/g, function (s) {
112
- return "-";
113
- })]);
114
- exports.underscored = underscored = exports.underscores = underscores = exports.underscore = underscore = exports.snakeCase = snakeCase = (0, _function.pipe)([uncase, gloss, replace(/\s/g, function (s) {
115
- return "_";
116
- })]);
117
-
118
- exports.capitalize = capitalize = function (string) {
119
- return toUpperCase(string[0]) + string.slice(1);
180
+ // adapted from https://github.com/VitorLuizC/normalize-text
181
+ normalize = function(string) {
182
+ return string.normalize("NFKD").replace(/[\u0300-\u036F]/g, "");
120
183
  };
121
-
122
- exports.titleCase = titleCase = replace(/\b\w/g, toUpperCase);
123
- exports.startsWith = startsWith = (0, _function.curry)(function (target, string) {
124
- return string.startsWith(target);
184
+ uncase = (0, _function.pipe)([
185
+ replace(/^[A-Z]/g, function(c) {
186
+ return c.toLowerCase();
187
+ }),
188
+ replace(/[A-Z]/g, function(c) {
189
+ return ` ${c.toLowerCase()}`;
190
+ }),
191
+ replace(/[_-]/g, " ")
192
+ ]);
193
+ gloss = (0, _function.pipe)([
194
+ normalize,
195
+ collapse,
196
+ toLowerCase,
197
+ replace(/[^A-Za-z0-9 ]+/g, "")
198
+ ]);
199
+ camelCase = (0, _function.pipe)([
200
+ uncase,
201
+ gloss,
202
+ replace(/\s\w/g, (0, _function.pipe)([
203
+ trim,
204
+ toUpperCase
205
+ ]))
206
+ ]);
207
+ dashed = dashes = dash = hyphenate = (0, _function.pipe)([
208
+ uncase,
209
+ gloss,
210
+ replace(/\s/g, function(s) {
211
+ return "-";
212
+ })
213
+ ]);
214
+ underscored = underscores = underscore = snakeCase = (0, _function.pipe)([
215
+ uncase,
216
+ gloss,
217
+ replace(/\s/g, function(s) {
218
+ return "_";
219
+ })
220
+ ]);
221
+ capitalize = function(string) {
222
+ return toUpperCase(string[0]) + string.slice(1);
223
+ };
224
+ titleCase = replace(/\b\w/g, toUpperCase);
225
+ startsWith = (0, _function.curry)(function(target, string) {
226
+ return string.startsWith(target);
125
227
  });
126
- exports.endsWith = endsWith = (0, _function.curry)(function (target, string) {
127
- return string.endsWith(target);
228
+ endsWith = (0, _function.curry)(function(target, string) {
229
+ return string.endsWith(target);
128
230
  });
129
- exports.padEnd = padEnd = (0, _function.curry)(function (n, padding, string) {
130
- return string.padEnd(n, padding);
231
+ padEnd = (0, _function.curry)(function(n, padding, string) {
232
+ return string.padEnd(n, padding);
131
233
  });
132
- exports.padStart = padStart = (0, _function.curry)(function (n, padding, string) {
133
- return string.padStart(n, padding);
234
+ padStart = (0, _function.curry)(function(n, padding, string) {
235
+ return string.padStart(n, padding);
134
236
  });
135
- exports.pad = pad = (0, _function.curry)(function (n, padding, string) {
136
- return padStart(n, padding, padEnd(Math.ceil((n - string.length) / 2) + string.length, padding, string));
237
+ pad = (0, _function.curry)(function(n, padding, string) {
238
+ return padStart(n, padding, padEnd(Math.ceil((n - string.length) / 2) + string.length, padding, string));
137
239
  });
138
- exports.repeat = repeat = (0, _function.curry)(function (n, string) {
139
- return string.repeat(n);
240
+ repeat = (0, _function.curry)(function(n, string) {
241
+ return string.repeat(n);
140
242
  });
141
- exports.enclose = enclose = (0, _function.curry)(function (delimiter, string) {
142
- return function ({
143
- start,
144
- end
145
- }) {
146
- if (delimiter.length > 1) {
147
- [start, end] = delimiter;
148
- } else {
149
- start = end = delimiter;
150
- }
151
-
152
- return start + string + end;
153
- }({});
243
+ enclose = (0, _function.curry)(function(delimiter, string) {
244
+ return function({ start, end }) {
245
+ if (delimiter.length > 1) {
246
+ [start, end] = delimiter;
247
+ } else {
248
+ start = end = delimiter;
249
+ }
250
+ return start + string + end;
251
+ }({});
154
252
  });
155
- exports.quote = quote = exports.dquote = dquote = enclose('"');
156
- exports.squote = squote = enclose("'");
157
- exports.truncate = truncate = (0, _function.curry)(function (n, string) {
158
- return string.slice(0, n);
253
+ quote = dquote = enclose('"');
254
+ squote = enclose("'");
255
+ truncate = (0, _function.curry)(function(n, string) {
256
+ return string.slice(0, n);
159
257
  });
160
- exports.elide = elide = (0, _function.curry)(function (n, end, string) {
161
- if (string.length > n) {
162
- return replace(/\W+\w*$/, end, truncate(n - end.length + 1, string));
163
- } else {
164
- return string;
165
- }
258
+ elide = (0, _function.curry)(function(n, end, string) {
259
+ if (string.length > n) {
260
+ return replace(/\W+\w*$/, end, truncate(n - end.length + 1, string));
261
+ } else {
262
+ return string;
263
+ }
166
264
  });
167
- exports.split = split = (0, _function.curry)(function (re, s) {
168
- return s.split(re);
265
+ split = (0, _function.curry)(function(re, s) {
266
+ return s.split(re);
169
267
  });
170
- exports.w = w = exports.words = words = (0, _function.pipe)([trim, split(/\s+/)]);
171
-
172
- exports.isBlank = isBlank = function (s) {
173
- return (0, _type.isString)(s) && (0, _value.isEmpty)(s);
268
+ w = words = (0, _function.pipe)([
269
+ trim,
270
+ split(/\s+/)
271
+ ]);
272
+ isBlank = function(s) {
273
+ return (0, _type.isString)(s) && (0, _value.isEmpty)(s);
174
274
  };
275
+ interpolate = (0, _function.curry)(function(template, context) {
276
+ var f, parameters;
277
+ parameters = Object.keys(context);
278
+ f = new Function(`{${parameters}}`, `return \`${template}\``);
279
+ return f(context);
280
+ });
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL3RleHQuY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUEsU0FBQSxFQUFBLFVBQUEsRUFBQSxRQUFBLEVBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxNQUFBLEVBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxPQUFBLEVBQUEsUUFBQSxFQUFBLFFBQUEsRUFBQSxLQUFBLEVBQUEsU0FBQSxFQUFBLFdBQUEsRUFBQSxPQUFBLEVBQUEsT0FBQSxFQUFBLEtBQUEsRUFBQSxTQUFBLEVBQUEsR0FBQSxFQUFBLE1BQUEsRUFBQSxRQUFBLEVBQUEsV0FBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLEVBQUEsT0FBQSxFQUFBLFNBQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLFVBQUEsRUFBQSxTQUFBLEVBQUEsTUFBQSxFQUFBLE9BQUEsRUFBQSxXQUFBLEVBQUEsUUFBQSxFQUFBLE9BQUEsRUFBQSxXQUFBLEVBQUEsSUFBQSxFQUFBLE9BQUEsRUFBQSxTQUFBLEVBQUEsUUFBQSxFQUFBLE1BQUEsRUFBQSxVQUFBLEVBQUEsV0FBQSxFQUFBLFdBQUEsRUFBQSxDQUFBLEVBQUE7O0FBQUEsT0FBQTtFQUFRLEtBQVI7RUFBZSxJQUFmO0VBQXFCLE1BQXJCO0NBQUEsTUFBQTs7QUFDQSxPQUFBO0VBQVMsUUFBVDtFQUFtQixRQUFuQjtFQUE2QixRQUE3QjtDQUFBLE1BQUE7O0FBQ0EsT0FBQTtFQUFRLE9BQVI7Q0FBQSxNQUFBOztBQUVBLFFBQUEsR0FBVyxRQUFBLENBQUMsQ0FBRCxDQUFBO1NBQU8sQ0FBQyxDQUFDLFFBQUYsQ0FBQTtBQUFQOztBQUVYLE1BQUEsR0FBUyxLQUFBLENBQU0sUUFBQSxDQUFDLEtBQUQsRUFBUSxNQUFSLENBQUE7RUFDYixJQUFHLENBQUMsUUFBQSxDQUFTLEtBQVQsQ0FBRCxDQUFBLElBQW9CLENBQUMsQ0FBQyxRQUFBLENBQVMsTUFBVCxD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RjtFQTZCRSxVQTdCRjtFQThCRSxRQTlCRjtFQStCRSxHQS9CRjtFQWdDRSxNQWhDRjtFQWlDRSxRQWpDRjtFQWtDRSxNQWxDRjtFQW1DRSxLQW5DRjtFQW9DRSxDQXBDRjtFQXFDRSxLQXJDRjtFQXNDRSxPQXRDRjtFQXVDRSxLQXZDRjtFQXdDRSxPQXhDRjtFQXlDRSxPQXpDRjtFQTBDRSxXQTFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3VycnksIHBpcGUsIGRldGFjaH0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuaW1wb3J0IHsgaXNTdHJpbmcsIGlzTnVtYmVyLCBpc0JpZ0ludCB9IGZyb20gXCIuL3R5cGVcIlxuaW1wb3J0IHtpc0VtcHR5fSBmcm9tIFwiLi92YWx1ZVwiXG5cbnRvU3RyaW5nID0gKHgpIC0+IHgudG9TdHJpbmcoKVxuXG50b0Jhc2UgPSBjdXJyeSAocmFkaXgsIG51bWJlcikgLT5cbiAgaWYgKGlzTnVtYmVyIHJhZGl4KSAmJiAoKGlzTnVtYmVyIG51bWJlcikgfHwgaXNCaWdJbnQgbnVtYmVyKVxuICAgIGlmIDIgPD0gcmFkaXggPD0gMzZcbiAgICAgIG51bWJlci50b1N0cmluZyByYWRpeFxuICAgIGVsc2VcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IgXCJ0b0Jhc2U6IHJhZGl4IG11c3QgYmV0d2VlbiAyIGFuZCAzNlwiXG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yIFwidG9CYXNlOiBhcmd1bWVudHMgbXVzdCBiZSBudW1iZXJzXCJcblxuZnJvbUJhc2UgPSBjdXJyeSAocmFkaXgsIHN0cmluZykgLT4gTnVtYmVyLnBhcnNlSW50IHN0cmluZywgcmFkaXhcblxucGFyc2VOdW1iZXIgPSAoc3RyaW5nKSAtPiBOdW1iZXIgc3RyaW5nXG5cbm1hdGNoID0gY3VycnkgKHBhdHRlcm4sIHN0cmluZykgLT4gc3RyaW5nLm1hdGNoIHBhdHRlcm5cblxuaXNNYXRjaCA9IGN1cnJ5IChwYXR0ZXJuLCBzdHJpbmcpIC0+IHBhdHRlcm4udGVzdCBzdHJpbmdcblxucmVwbGFjZSA9IGN1cnJ5IChwYXR0ZXJuLCByZXBsYWNlbWVudCwgc3RyaW5nKSAtPlxuICBzdHJpbmcucmVwbGFjZSBwYXR0ZXJuLCByZXBsYWNlbWVudFxuXG50b1VwcGVyQ2FzZSA9IHRvVXBwZXIgPSBkZXRhY2ggU3RyaW5nOjp0b1VwcGVyQ2FzZVxuXG50b0xvd2VyQ2FzZSA9IHRvTG93ZXIgPSBkZXRhY2ggU3RyaW5nOjp0b0xvd2VyQ2FzZVxuXG50cmltID0gZGV0YWNoIFN0cmluZzo6dHJpbVxuXG50cmltU3RhcnQgPSBkZXRhY2ggU3RyaW5nOjp0cmltU3RhcnRcblxudHJpbUVuZCA9IGRldGFjaCBTdHJpbmc6OnRyaW1FbmRcblxuY29sbGFwc2UgPSAocykgLT4gcmVwbGFjZSAvXFxzKy9nLCBcIiBcIiwgdHJpbSBzXG5cbiMgYWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9WaXRvckx1aXpDL25vcm1hbGl6ZS10ZXh0XG5ub3JtYWxpemUgPSAoc3RyaW5nKSAtPlxuICBzdHJpbmdcbiAgLm5vcm1hbGl6ZSBcIk5GS0RcIlxuICAucmVwbGFjZSAvW1xcdTAzMDAtXFx1MDM2Rl0vZywgXCJcIlxuXG51bmNhc2UgPSBwaXBlIFtcbiAgcmVwbGFjZSAvXltBLVpdL2csIChjKSAtPiBjLnRvTG93ZXJDYXNlKClcbiAgcmVwbGFjZSAvW0EtWl0vZywgKGMpIC0+IFwiICN7Yy50b0xvd2VyQ2FzZSgpfVwiXG4gIHJlcGxhY2UgL1tfLV0vZywgXCIgXCJcbl1cblxuZ2xvc3MgPSBwaXBlIFtcbiAgbm9ybWFsaXplXG4gIGNvbGxhcHNlXG4gIHRvTG93ZXJDYXNlXG4gIHJlcGxhY2UgL1teQS1aYS16MC05IF0rL2csIFwiXCJcbl1cblxuY2FtZWxDYXNlID0gcGlwZSBbXG4gIHVuY2FzZVxuICBnbG9zc1xuICByZXBsYWNlIC9cXHNcXHcvZywgcGlwZSBbXG4gICAgdHJpbVxuICAgIHRvVXBwZXJDYXNlXG4gIF1cbl1cblxuZGFzaGVkID0gZGFzaGVzID0gZGFzaCA9IGh5cGhlbmF0ZSA9IHBpcGUgW1xuICB1bmNhc2VcbiAgZ2xvc3NcbiAgcmVwbGFjZSAvXFxzL2csIChzKSAtPiBcIi1cIlxuXVxuXG51bmRlcnNjb3JlZCA9IHVuZGVyc2NvcmVzID0gdW5kZXJzY29yZSA9IHNuYWtlQ2FzZSA9IHBpcGUgW1xuICB1bmNhc2VcbiAgZ2xvc3NcbiAgcmVwbGFjZSAvXFxzL2csIChzKSAtPiBcIl9cIlxuXVxuXG5jYXBpdGFsaXplID0gKHN0cmluZykgLT4gKHRvVXBwZXJDYXNlIHN0cmluZ1swXSkgKyBzdHJpbmdbMS4uXVxuXG50aXRsZUNhc2UgPSByZXBsYWNlIC9cXGJcXHcvZywgdG9VcHBlckNhc2Vcblxuc3RhcnRzV2l0aCA9IGN1cnJ5ICh0YXJnZXQsIHN0cmluZykgLT4gc3RyaW5nLnN0YXJ0c1dpdGggdGFyZ2V0XG5cbmVuZHNXaXRoID0gY3VycnkgKHRhcmdldCwgc3RyaW5nKSAtPiBzdHJpbmcuZW5kc1dpdGggdGFyZ2V0XG5cbnBhZEVuZCA9IGN1cnJ5IChuLCBwYWRkaW5nLCBzdHJpbmcpIC0+IHN0cmluZy5wYWRFbmQgbiwgcGFkZGluZ1xuXG5wYWRTdGFydCA9IGN1cnJ5IChuLCBwYWRkaW5nLCBzdHJpbmcpIC0+IHN0cmluZy5wYWRTdGFydCBuLCBwYWRkaW5nXG5cbnBhZCA9IGN1cnJ5IChuLCBwYWRkaW5nLCBzdHJpbmcpIC0+XG4gIHBhZFN0YXJ0IG4sIHBhZGRpbmcsXG4gICAgcGFkRW5kIChNYXRoLmNlaWwgKG4gLSBzdHJpbmcubGVuZ3RoKS8yKSArIHN0cmluZy5sZW5ndGgsIHBhZGRpbmcsIHN0cmluZ1xuXG5yZXBlYXQgPSBjdXJyeSAobiwgc3RyaW5nKSAtPiBzdHJpbmcucmVwZWF0IG5cblxuZW5jbG9zZSA9IGN1cnJ5IChkZWxpbWl0ZXIsIHN0cmluZykgLT5cbiAgZG8gKHtzdGFydCwgZW5kfSA9IHt9KSAtPlxuICAgIGlmIGRlbGltaXRlci5sZW5ndGggPiAxXG4gICAgICBbIHN0YXJ0LCBlbmQgXSA9IGRlbGltaXRlclxuICAgIGVsc2VcbiAgICAgIHN0YXJ0ID0gZW5kID0gZGVsaW1pdGVyXG4gICAgc3RhcnQgKyBzdHJpbmcgKyBlbmRcblxucXVvdGUgPSBkcXVvdGUgPSBlbmNsb3NlICdcIidcblxuc3F1b3RlID0gZW5jbG9zZSBcIidcIlxuXG50cnVuY2F0ZSA9IGN1cnJ5IChuLCBzdHJpbmcpIC0+IHN0cmluZ1swLi4ubl1cblxuZWxpZGUgPSBjdXJyeSAobiwgZW5kLCBzdHJpbmcpIC0+XG4gIGlmIHN0cmluZy5sZW5ndGggPiBuXG4gICAgcmVwbGFjZSAvXFxXK1xcdyokLywgZW5kLCB0cnVuY2F0ZSBuIC0gZW5kLmxlbmd0aCArIDEsIHN0cmluZ1xuICBlbHNlXG4gICAgc3RyaW5nXG5cbnNwbGl0ID0gY3VycnkgKHJlLCBzKSAtPiBzLnNwbGl0IHJlXG5cbncgPSB3b3JkcyA9IHBpcGUgW1xuICB0cmltXG4gIHNwbGl0IC9cXHMrL1xuXVxuXG5pc0JsYW5rID0gKHMpIC0+IChpc1N0cmluZyBzKSAmJiAoaXNFbXB0eSBzKVxuXG5pbnRlcnBvbGF0ZSA9IGN1cnJ5ICggdGVtcGxhdGUsIGNvbnRleHQgKSAtPlxuICBwYXJhbWV0ZXJzID0gT2JqZWN0LmtleXMgY29udGV4dFxuICBmID0gbmV3IEZ1bmN0aW9uIFwieyN7IHBhcmFtZXRlcnMgfX1cIiwgXCJyZXR1cm4gYCN7IHRlbXBsYXRlIH1gXCJcbiAgZiBjb250ZXh0XG5cbmV4cG9ydCB7XG4gIHRvU3RyaW5nXG4gIHRvQmFzZVxuICBmcm9tQmFzZVxuICBwYXJzZU51bWJlclxuICB0b1VwcGVyQ2FzZVxuICB0b0xvd2VyQ2FzZVxuICBjb2xsYXBzZVxuICBub3JtYWxpemVcbiAgdW5jYXNlXG4gIGdsb3NzXG4gIGNhbWVsQ2FzZVxuICBkYXNoZWRcbiAgZGFzaGVzXG4gIGRhc2hcbiAgaHlwaGVuYXRlXG4gIHVuZGVyc2NvcmVkXG4gIHVuZGVyc2NvcmVzXG4gIHVuZGVyc2NvcmVcbiAgc25ha2VDYXNlXG4gIGNhcGl0YWxpemVcbiAgdGl0bGVDYXNlXG4gIHRyaW1cbiAgdHJ1bmNhdGVcbiAgZWxpZGVcbiAgZW5jbG9zZVxuICBxdW90ZVxuICBkcXVvdGVcbiAgc3F1b3RlXG4gIHN0YXJ0c1dpdGhcbiAgZW5kc1dpdGhcbiAgcGFkXG4gIHBhZEVuZFxuICBwYWRTdGFydFxuICByZXBlYXRcbiAgc3BsaXRcbiAgd1xuICB3b3Jkc1xuICBpc0JsYW5rXG4gIG1hdGNoXG4gIGlzTWF0Y2hcbiAgcmVwbGFjZVxuICBpbnRlcnBvbGF0ZVxufVxuIl19
282
+ //# sourceURL=/@dashkite/joy/src/text.coffee
175
283
 
176
- exports.template = template = function (string, filters = {}) {
177
- return function ({
178
- key,
179
- apply
180
- }) {
181
- filters = Object.assign({}, {
182
- toString,
183
- toUpperCase,
184
- toLowerCase,
185
- trim
186
- }, filters);
187
-
188
- apply = function (string, name) {
189
- return filters[name](string);
190
- };
191
-
192
- return function (context) {
193
- return string.replace(/\{\{([^}]+)\}\}/g, function (_, target) {
194
- var names;
195
- [key, ...names] = target.split("|").map(trim);
196
- return names.reduce(apply, context[key]);
197
- });
198
- };
199
- }({});
200
- };
201
- //# sourceMappingURL=data:application/json;base64,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cnQge2N1cnJ5LCBwaXBlLCBkZXRhY2h9IGZyb20gXCIuL2Z1bmN0aW9uXCJcbmltcG9ydCB7IGlzU3RyaW5nLCBpc051bWJlciwgaXNCaWdJbnQgfSBmcm9tIFwiLi90eXBlXCJcbmltcG9ydCB7aXNFbXB0eX0gZnJvbSBcIi4vdmFsdWVcIlxuXG50b1N0cmluZyA9ICh4KSAtPiB4LnRvU3RyaW5nKClcblxudG9CYXNlID0gY3VycnkgKHJhZGl4LCBudW1iZXIpIC0+XG4gIGlmIChpc051bWJlciByYWRpeCkgJiYgKChpc051bWJlciBudW1iZXIpIHx8IGlzQmlnSW50IG51bWJlcilcbiAgICBpZiAyIDw9IHJhZGl4IDw9IDM2XG4gICAgICBudW1iZXIudG9TdHJpbmcgcmFkaXhcbiAgICBlbHNlXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yIFwidG9CYXNlOiByYWRpeCBtdXN0IGJldHdlZW4gMiBhbmQgMzZcIlxuICBlbHNlXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvciBcInRvQmFzZTogYXJndW1lbnRzIG11c3QgYmUgbnVtYmVyc1wiXG5cbmZyb21CYXNlID0gY3VycnkgKHJhZGl4LCBzdHJpbmcpIC0+IE51bWJlci5wYXJzZUludCBzdHJpbmcsIHJhZGl4XG5cbnBhcnNlTnVtYmVyID0gKHN0cmluZykgLT4gTnVtYmVyIHN0cmluZ1xuXG5tYXRjaCA9IGN1cnJ5IChwYXR0ZXJuLCBzdHJpbmcpIC0+IHN0cmluZy5tYXRjaCBwYXR0ZXJuXG5cbmlzTWF0Y2ggPSBjdXJyeSAocGF0dGVybiwgc3RyaW5nKSAtPiBwYXR0ZXJuLnRlc3Qgc3RyaW5nXG5cbnJlcGxhY2UgPSBjdXJyeSAocGF0dGVybiwgcmVwbGFjZW1lbnQsIHN0cmluZykgLT5cbiAgc3RyaW5nLnJlcGxhY2UgcGF0dGVybiwgcmVwbGFjZW1lbnRcblxudG9VcHBlckNhc2UgPSB0b1VwcGVyID0gZGV0YWNoIFN0cmluZzo6dG9VcHBlckNhc2VcblxudG9Mb3dlckNhc2UgPSB0b0xvd2VyID0gZGV0YWNoIFN0cmluZzo6dG9Mb3dlckNhc2VcblxudHJpbSA9IGRldGFjaCBTdHJpbmc6OnRyaW1cblxudHJpbVN0YXJ0ID0gZGV0YWNoIFN0cmluZzo6dHJpbVN0YXJ0XG5cbnRyaW1FbmQgPSBkZXRhY2ggU3RyaW5nOjp0cmltRW5kXG5cbmNvbGxhcHNlID0gKHMpIC0+IHJlcGxhY2UgL1xccysvZywgXCIgXCIsIHRyaW0gc1xuXG4jIGFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vVml0b3JMdWl6Qy9ub3JtYWxpemUtdGV4dFxubm9ybWFsaXplID0gKHN0cmluZykgLT5cbiAgc3RyaW5nXG4gIC5ub3JtYWxpemUgXCJORktEXCJcbiAgLnJlcGxhY2UgL1tcXHUwMzAwLVxcdTAzNkZdL2csIFwiXCJcblxudW5jYXNlID0gcGlwZSBbXG4gIHJlcGxhY2UgL15bQS1aXS9nLCAoYykgLT4gYy50b0xvd2VyQ2FzZSgpXG4gIHJlcGxhY2UgL1tBLVpdL2csIChjKSAtPiBcIiAje2MudG9Mb3dlckNhc2UoKX1cIlxuICByZXBsYWNlIC9bXy1dL2csIFwiIFwiXG5dXG5cbmdsb3NzID0gcGlwZSBbXG4gIG5vcm1hbGl6ZVxuICBjb2xsYXBzZVxuICB0b0xvd2VyQ2FzZVxuICByZXBsYWNlIC9bXkEtWmEtejAtOSBdKy9nLCBcIlwiXG5dXG5cbmNhbWVsQ2FzZSA9IHBpcGUgW1xuICB1bmNhc2VcbiAgZ2xvc3NcbiAgcmVwbGFjZSAvXFxzXFx3L2csIHBpcGUgW1xuICAgIHRyaW1cbiAgICB0b1VwcGVyQ2FzZVxuICBdXG5dXG5cbmRhc2hlZCA9IGRhc2hlcyA9IGRhc2ggPSBwaXBlIFtcbiAgdW5jYXNlXG4gIGdsb3NzXG4gIHJlcGxhY2UgL1xccy9nLCAocykgLT4gXCItXCJcbl1cblxudW5kZXJzY29yZWQgPSB1bmRlcnNjb3JlcyA9IHVuZGVyc2NvcmUgPSBzbmFrZUNhc2UgPSBwaXBlIFtcbiAgdW5jYXNlXG4gIGdsb3NzXG4gIHJlcGxhY2UgL1xccy9nLCAocykgLT4gXCJfXCJcbl1cblxuY2FwaXRhbGl6ZSA9IChzdHJpbmcpIC0+ICh0b1VwcGVyQ2FzZSBzdHJpbmdbMF0pICsgc3RyaW5nWzEuLl1cblxudGl0bGVDYXNlID0gcmVwbGFjZSAvXFxiXFx3L2csIHRvVXBwZXJDYXNlXG5cbnN0YXJ0c1dpdGggPSBjdXJyeSAodGFyZ2V0LCBzdHJpbmcpIC0+IHN0cmluZy5zdGFydHNXaXRoIHRhcmdldFxuXG5lbmRzV2l0aCA9IGN1cnJ5ICh0YXJnZXQsIHN0cmluZykgLT4gc3RyaW5nLmVuZHNXaXRoIHRhcmdldFxuXG5wYWRFbmQgPSBjdXJyeSAobiwgcGFkZGluZywgc3RyaW5nKSAtPiBzdHJpbmcucGFkRW5kIG4sIHBhZGRpbmdcblxucGFkU3RhcnQgPSBjdXJyeSAobiwgcGFkZGluZywgc3RyaW5nKSAtPiBzdHJpbmcucGFkU3RhcnQgbiwgcGFkZGluZ1xuXG5wYWQgPSBjdXJyeSAobiwgcGFkZGluZywgc3RyaW5nKSAtPlxuICBwYWRTdGFydCBuLCBwYWRkaW5nLFxuICAgIHBhZEVuZCAoTWF0aC5jZWlsIChuIC0gc3RyaW5nLmxlbmd0aCkvMikgKyBzdHJpbmcubGVuZ3RoLCBwYWRkaW5nLCBzdHJpbmdcblxucmVwZWF0ID0gY3VycnkgKG4sIHN0cmluZykgLT4gc3RyaW5nLnJlcGVhdCBuXG5cbmVuY2xvc2UgPSBjdXJyeSAoZGVsaW1pdGVyLCBzdHJpbmcpIC0+XG4gIGRvICh7c3RhcnQsIGVuZH0gPSB7fSkgLT5cbiAgICBpZiBkZWxpbWl0ZXIubGVuZ3RoID4gMVxuICAgICAgWyBzdGFydCwgZW5kIF0gPSBkZWxpbWl0ZXJcbiAgICBlbHNlXG4gICAgICBzdGFydCA9IGVuZCA9IGRlbGltaXRlclxuICAgIHN0YXJ0ICsgc3RyaW5nICsgZW5kXG5cbnF1b3RlID0gZHF1b3RlID0gZW5jbG9zZSAnXCInXG5cbnNxdW90ZSA9IGVuY2xvc2UgXCInXCJcblxudHJ1bmNhdGUgPSBjdXJyeSAobiwgc3RyaW5nKSAtPiBzdHJpbmdbMC4uLm5dXG5cbmVsaWRlID0gY3VycnkgKG4sIGVuZCwgc3RyaW5nKSAtPlxuICBpZiBzdHJpbmcubGVuZ3RoID4gblxuICAgIHJlcGxhY2UgL1xcVytcXHcqJC8sIGVuZCwgdHJ1bmNhdGUgbiAtIGVuZC5sZW5ndGggKyAxLCBzdHJpbmdcbiAgZWxzZVxuICAgIHN0cmluZ1xuXG5zcGxpdCA9IGN1cnJ5IChyZSwgcykgLT4gcy5zcGxpdCByZVxuXG53ID0gd29yZHMgPSBwaXBlIFtcbiAgdHJpbVxuICBzcGxpdCAvXFxzKy9cbl1cblxuaXNCbGFuayA9IChzKSAtPiAoaXNTdHJpbmcgcykgJiYgKGlzRW1wdHkgcylcblxudGVtcGxhdGUgPSAoc3RyaW5nLCBmaWx0ZXJzID0ge30pIC0+XG4gIGRvICh7IGtleSwgYXBwbHkgfSA9IHt9KSAtPlxuICAgIGZpbHRlcnMgPSBPYmplY3QuYXNzaWduIHt9LFxuICAgICAge3RvU3RyaW5nLCB0b1VwcGVyQ2FzZSwgdG9Mb3dlckNhc2UsIHRyaW19LFxuICAgICAgZmlsdGVyc1xuICAgIGFwcGx5ID0gKHN0cmluZywgbmFtZSkgLT4gZmlsdGVyc1tuYW1lXSBzdHJpbmdcbiAgICAoY29udGV4dCkgLT5cbiAgICAgIHN0cmluZy5yZXBsYWNlIC9cXHtcXHsoW159XSspXFx9XFx9L2csIChfLCB0YXJnZXQpIC0+XG4gICAgICAgIFtrZXksIG5hbWVzLi4uXSA9IHRhcmdldC5zcGxpdChcInxcIikubWFwIHRyaW1cbiAgICAgICAgbmFtZXMucmVkdWNlIGFwcGx5LCBjb250ZXh0W2tleV1cblxuZXhwb3J0IHtcbiAgdG9TdHJpbmdcbiAgdG9CYXNlXG4gIGZyb21CYXNlXG4gIHBhcnNlTnVtYmVyXG4gIHRvVXBwZXJDYXNlXG4gIHRvTG93ZXJDYXNlXG4gIGNvbGxhcHNlXG4gIG5vcm1hbGl6ZVxuICB1bmNhc2VcbiAgZ2xvc3NcbiAgY2FtZWxDYXNlXG4gIGRhc2hlZFxuICBkYXNoZXNcbiAgZGFzaFxuICB1bmRlcnNjb3JlZFxuICB1bmRlcnNjb3Jlc1xuICB1bmRlcnNjb3JlXG4gIHNuYWtlQ2FzZVxuICBjYXBpdGFsaXplXG4gIHRpdGxlQ2FzZVxuICB0cmltXG4gIHRydW5jYXRlXG4gIGVsaWRlXG4gIGVuY2xvc2VcbiAgcXVvdGVcbiAgZHF1b3RlXG4gIHNxdW90ZVxuICBzdGFydHNXaXRoXG4gIGVuZHNXaXRoXG4gIHBhZFxuICBwYWRFbmRcbiAgcGFkU3RhcnRcbiAgcmVwZWF0XG4gIHNwbGl0XG4gIHdcbiAgd29yZHNcbiAgaXNCbGFua1xuICBtYXRjaFxuICBpc01hdGNoXG4gIHJlcGxhY2VcbiAgdGVtcGxhdGVcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
202
- //# sourceURL=src/text.coffee
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvdGV4dC5jb2ZmZWUiXSwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3VycnksIHBpcGUsIGRldGFjaH0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuaW1wb3J0IHsgaXNTdHJpbmcsIGlzTnVtYmVyLCBpc0JpZ0ludCB9IGZyb20gXCIuL3R5cGVcIlxuaW1wb3J0IHtpc0VtcHR5fSBmcm9tIFwiLi92YWx1ZVwiXG5cbnRvU3RyaW5nID0gKHgpIC0+IHgudG9TdHJpbmcoKVxuXG50b0Jhc2UgPSBjdXJyeSAocmFkaXgsIG51bWJlcikgLT5cbiAgaWYgKGlzTnVtYmVyIHJhZGl4KSAmJiAoKGlzTnVtYmVyIG51bWJlcikgfHwgaXNCaWdJbnQgbnVtYmVyKVxuICAgIGlmIDIgPD0gcmFkaXggPD0gMzZcbiAgICAgIG51bWJlci50b1N0cmluZyByYWRpeFxuICAgIGVsc2VcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IgXCJ0b0Jhc2U6IHJhZGl4IG11c3QgYmV0d2VlbiAyIGFuZCAzNlwiXG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yIFwidG9CYXNlOiBhcmd1bWVudHMgbXVzdCBiZSBudW1iZXJzXCJcblxuZnJvbUJhc2UgPSBjdXJyeSAocmFkaXgsIHN0cmluZykgLT4gTnVtYmVyLnBhcnNlSW50IHN0cmluZywgcmFkaXhcblxucGFyc2VOdW1iZXIgPSAoc3RyaW5nKSAtPiBOdW1iZXIgc3RyaW5nXG5cbm1hdGNoID0gY3VycnkgKHBhdHRlcm4sIHN0cmluZykgLT4gc3RyaW5nLm1hdGNoIHBhdHRlcm5cblxuaXNNYXRjaCA9IGN1cnJ5IChwYXR0ZXJuLCBzdHJpbmcpIC0+IHBhdHRlcm4udGVzdCBzdHJpbmdcblxucmVwbGFjZSA9IGN1cnJ5IChwYXR0ZXJuLCByZXBsYWNlbWVudCwgc3RyaW5nKSAtPlxuICBzdHJpbmcucmVwbGFjZSBwYXR0ZXJuLCByZXBsYWNlbWVudFxuXG50b1VwcGVyQ2FzZSA9IHRvVXBwZXIgPSBkZXRhY2ggU3RyaW5nOjp0b1VwcGVyQ2FzZVxuXG50b0xvd2VyQ2FzZSA9IHRvTG93ZXIgPSBkZXRhY2ggU3RyaW5nOjp0b0xvd2VyQ2FzZVxuXG50cmltID0gZGV0YWNoIFN0cmluZzo6dHJpbVxuXG50cmltU3RhcnQgPSBkZXRhY2ggU3RyaW5nOjp0cmltU3RhcnRcblxudHJpbUVuZCA9IGRldGFjaCBTdHJpbmc6OnRyaW1FbmRcblxuY29sbGFwc2UgPSAocykgLT4gcmVwbGFjZSAvXFxzKy9nLCBcIiBcIiwgdHJpbSBzXG5cbiMgYWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9WaXRvckx1aXpDL25vcm1hbGl6ZS10ZXh0XG5ub3JtYWxpemUgPSAoc3RyaW5nKSAtPlxuICBzdHJpbmdcbiAgLm5vcm1hbGl6ZSBcIk5GS0RcIlxuICAucmVwbGFjZSAvW1xcdTAzMDAtXFx1MDM2Rl0vZywgXCJcIlxuXG51bmNhc2UgPSBwaXBlIFtcbiAgcmVwbGFjZSAvXltBLVpdL2csIChjKSAtPiBjLnRvTG93ZXJDYXNlKClcbiAgcmVwbGFjZSAvW0EtWl0vZywgKGMpIC0+IFwiICN7Yy50b0xvd2VyQ2FzZSgpfVwiXG4gIHJlcGxhY2UgL1tfLV0vZywgXCIgXCJcbl1cblxuZ2xvc3MgPSBwaXBlIFtcbiAgbm9ybWFsaXplXG4gIGNvbGxhcHNlXG4gIHRvTG93ZXJDYXNlXG4gIHJlcGxhY2UgL1teQS1aYS16MC05IF0rL2csIFwiXCJcbl1cblxuY2FtZWxDYXNlID0gcGlwZSBbXG4gIHVuY2FzZVxuICBnbG9zc1xuICByZXBsYWNlIC9cXHNcXHcvZywgcGlwZSBbXG4gICAgdHJpbVxuICAgIHRvVXBwZXJDYXNlXG4gIF1cbl1cblxuZGFzaGVkID0gZGFzaGVzID0gZGFzaCA9IGh5cGhlbmF0ZSA9IHBpcGUgW1xuICB1bmNhc2VcbiAgZ2xvc3NcbiAgcmVwbGFjZSAvXFxzL2csIChzKSAtPiBcIi1cIlxuXVxuXG51bmRlcnNjb3JlZCA9IHVuZGVyc2NvcmVzID0gdW5kZXJzY29yZSA9IHNuYWtlQ2FzZSA9IHBpcGUgW1xuICB1bmNhc2VcbiAgZ2xvc3NcbiAgcmVwbGFjZSAvXFxzL2csIChzKSAtPiBcIl9cIlxuXVxuXG5jYXBpdGFsaXplID0gKHN0cmluZykgLT4gKHRvVXBwZXJDYXNlIHN0cmluZ1swXSkgKyBzdHJpbmdbMS4uXVxuXG50aXRsZUNhc2UgPSByZXBsYWNlIC9cXGJcXHcvZywgdG9VcHBlckNhc2Vcblxuc3RhcnRzV2l0aCA9IGN1cnJ5ICh0YXJnZXQsIHN0cmluZykgLT4gc3RyaW5nLnN0YXJ0c1dpdGggdGFyZ2V0XG5cbmVuZHNXaXRoID0gY3VycnkgKHRhcmdldCwgc3RyaW5nKSAtPiBzdHJpbmcuZW5kc1dpdGggdGFyZ2V0XG5cbnBhZEVuZCA9IGN1cnJ5IChuLCBwYWRkaW5nLCBzdHJpbmcpIC0+IHN0cmluZy5wYWRFbmQgbiwgcGFkZGluZ1xuXG5wYWRTdGFydCA9IGN1cnJ5IChuLCBwYWRkaW5nLCBzdHJpbmcpIC0+IHN0cmluZy5wYWRTdGFydCBuLCBwYWRkaW5nXG5cbnBhZCA9IGN1cnJ5IChuLCBwYWRkaW5nLCBzdHJpbmcpIC0+XG4gIHBhZFN0YXJ0IG4sIHBhZGRpbmcsXG4gICAgcGFkRW5kIChNYXRoLmNlaWwgKG4gLSBzdHJpbmcubGVuZ3RoKS8yKSArIHN0cmluZy5sZW5ndGgsIHBhZGRpbmcsIHN0cmluZ1xuXG5yZXBlYXQgPSBjdXJyeSAobiwgc3RyaW5nKSAtPiBzdHJpbmcucmVwZWF0IG5cblxuZW5jbG9zZSA9IGN1cnJ5IChkZWxpbWl0ZXIsIHN0cmluZykgLT5cbiAgZG8gKHtzdGFydCwgZW5kfSA9IHt9KSAtPlxuICAgIGlmIGRlbGltaXRlci5sZW5ndGggPiAxXG4gICAgICBbIHN0YXJ0LCBlbmQgXSA9IGRlbGltaXRlclxuICAgIGVsc2VcbiAgICAgIHN0YXJ0ID0gZW5kID0gZGVsaW1pdGVyXG4gICAgc3RhcnQgKyBzdHJpbmcgKyBlbmRcblxucXVvdGUgPSBkcXVvdGUgPSBlbmNsb3NlICdcIidcblxuc3F1b3RlID0gZW5jbG9zZSBcIidcIlxuXG50cnVuY2F0ZSA9IGN1cnJ5IChuLCBzdHJpbmcpIC0+IHN0cmluZ1swLi4ubl1cblxuZWxpZGUgPSBjdXJyeSAobiwgZW5kLCBzdHJpbmcpIC0+XG4gIGlmIHN0cmluZy5sZW5ndGggPiBuXG4gICAgcmVwbGFjZSAvXFxXK1xcdyokLywgZW5kLCB0cnVuY2F0ZSBuIC0gZW5kLmxlbmd0aCArIDEsIHN0cmluZ1xuICBlbHNlXG4gICAgc3RyaW5nXG5cbnNwbGl0ID0gY3VycnkgKHJlLCBzKSAtPiBzLnNwbGl0IHJlXG5cbncgPSB3b3JkcyA9IHBpcGUgW1xuICB0cmltXG4gIHNwbGl0IC9cXHMrL1xuXVxuXG5pc0JsYW5rID0gKHMpIC0+IChpc1N0cmluZyBzKSAmJiAoaXNFbXB0eSBzKVxuXG5pbnRlcnBvbGF0ZSA9IGN1cnJ5ICggdGVtcGxhdGUsIGNvbnRleHQgKSAtPlxuICBwYXJhbWV0ZXJzID0gT2JqZWN0LmtleXMgY29udGV4dFxuICBmID0gbmV3IEZ1bmN0aW9uIFwieyN7IHBhcmFtZXRlcnMgfX1cIiwgXCJyZXR1cm4gYCN7IHRlbXBsYXRlIH1gXCJcbiAgZiBjb250ZXh0XG5cbmV4cG9ydCB7XG4gIHRvU3RyaW5nXG4gIHRvQmFzZVxuICBmcm9tQmFzZVxuICBwYXJzZU51bWJlclxuICB0b1VwcGVyQ2FzZVxuICB0b0xvd2VyQ2FzZVxuICBjb2xsYXBzZVxuICBub3JtYWxpemVcbiAgdW5jYXNlXG4gIGdsb3NzXG4gIGNhbWVsQ2FzZVxuICBkYXNoZWRcbiAgZGFzaGVzXG4gIGRhc2hcbiAgaHlwaGVuYXRlXG4gIHVuZGVyc2NvcmVkXG4gIHVuZGVyc2NvcmVzXG4gIHVuZGVyc2NvcmVcbiAgc25ha2VDYXNlXG4gIGNhcGl0YWxpemVcbiAgdGl0bGVDYXNlXG4gIHRyaW1cbiAgdHJ1bmNhdGVcbiAgZWxpZGVcbiAgZW5jbG9zZVxuICBxdW90ZVxuICBkcXVvdGVcbiAgc3F1b3RlXG4gIHN0YXJ0c1dpdGhcbiAgZW5kc1dpdGhcbiAgcGFkXG4gIHBhZEVuZFxuICBwYWRTdGFydFxuICByZXBlYXRcbiAgc3BsaXRcbiAgd1xuICB3b3Jkc1xuICBpc0JsYW5rXG4gIG1hdGNoXG4gIGlzTWF0Y2hcbiAgcmVwbGFjZVxuICBpbnRlcnBvbGF0ZVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBNklFLFNBWEY7OztjQUFBO2VBb0JFOztZQXBCRjtlQU9FOztJQU9BLElBZEY7OztVQUFBO2VBWUU7O1VBWkY7ZUFhRTs7VUFiRjtlQTJCRTs7U0EzQkY7ZUF3QkU7O1dBeEJGO2VBeUJFOztZQXpCRjtlQThCRTs7WUE5QkY7ZUFHRTs7U0FIRjtlQVVFOzthQVZGO2VBZUU7O2VBZkY7ZUEwQ0U7O0lBSkEsT0F0Q0Y7OztXQUFBO2VBd0NFOztTQXhDRjtlQXVDRTs7YUF2Q0Y7ZUFRRTs7T0FSRjtlQStCRTs7VUEvQkY7ZUFnQ0U7O1lBaENGO2VBaUNFOztJQTdCQSxXQUpGOzs7U0FBQTtlQTBCRTs7VUExQkY7ZUFrQ0U7O1dBbENGO2VBeUNFOzthQXpDRjtlQW1CRTs7SUFnQkEsS0FuQ0Y7OztJQTRCRSxNQTVCRjs7O2NBQUE7ZUE2QkU7O0lBUkEsU0FyQkY7OztVQUFBO2VBRUU7O2VBRkY7ZUFNRTs7WUFORjtlQUNFOztlQURGO2VBS0U7O1FBTEY7ZUFzQkU7O1lBdEJGO2VBdUJFOztVQXZCRjtlQVNFOztJQVNBLFVBbEJGOzs7ZUFBQTtlQWdCRTs7ZUFoQkY7ZUFpQkU7O0lBbUJBLENBcENGOzs7U0FBQTtlQXFDRTs7OzBCQXZLRjtzQkFDQTt1QkFDQTtBQUZBLElBQUEsU0FBQSxFQUFBLFVBQUEsRUFBQSxRQUFBLEVBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxNQUFBLEVBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxPQUFBLEVBQUEsUUFBQSxFQUFBLFFBQUEsRUFBQSxLQUFBLEVBQUEsU0FBQSxFQUFBLFdBQUEsRUFBQSxPQUFBLEVBQUEsT0FBQSxFQUFBLEtBQUEsRUFBQSxTQUFBLEVBQUEsR0FBQSxFQUFBLE1BQUEsRUFB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