occam-verify-cli 1.0.230 → 1.0.233
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.
- package/lib/context/local.js +1 -14
- package/lib/dom/axiom.js +22 -16
- package/lib/dom/combinator.js +5 -5
- package/lib/dom/conclusion.js +5 -5
- package/lib/dom/conjecture.js +9 -9
- package/lib/dom/constructor.js +5 -5
- package/lib/dom/declaration/combinator.js +14 -14
- package/lib/dom/declaration/complexType.js +35 -35
- package/lib/dom/declaration/constructor.js +19 -19
- package/lib/dom/declaration/metavariable.js +22 -22
- package/lib/dom/declaration/simpleType.js +23 -23
- package/lib/dom/declaration/variable.js +20 -20
- package/lib/dom/declaration.js +4 -2
- package/lib/dom/deduction.js +5 -5
- package/lib/dom/derivation.js +5 -5
- package/lib/dom/error.js +9 -9
- package/lib/dom/hypothesis.js +260 -0
- package/lib/dom/label.js +18 -24
- package/lib/dom/lemma.js +7 -7
- package/lib/dom/metaLemma.js +9 -9
- package/lib/dom/metaType.js +4 -10
- package/lib/dom/metatheorem.js +9 -9
- package/lib/dom/metavariable.js +7 -8
- package/lib/dom/parameter.js +2 -2
- package/lib/dom/premise.js +5 -5
- package/lib/dom/procedureCall.js +11 -10
- package/lib/dom/proof.js +3 -3
- package/lib/dom/property.js +9 -9
- package/lib/dom/reference.js +23 -22
- package/lib/dom/rule.js +25 -25
- package/lib/dom/section.js +146 -0
- package/lib/dom/signature.js +5 -5
- package/lib/dom/statement.js +25 -20
- package/lib/dom/step.js +3 -3
- package/lib/dom/subDerivation.js +5 -5
- package/lib/dom/subproof.js +7 -7
- package/lib/dom/substitution/statement.js +3 -3
- package/lib/dom/supposition.js +5 -5
- package/lib/dom/term.js +5 -6
- package/lib/dom/theorem.js +9 -9
- package/lib/dom/topLevelAssertion.js +22 -22
- package/lib/dom/topLevelMetaAssertion.js +14 -14
- package/lib/dom/type.js +21 -21
- package/lib/dom/variable.js +9 -15
- package/lib/index.js +3 -1
- package/lib/node/hypothesis.js +123 -0
- package/lib/node/section.js +116 -0
- package/lib/nonTerminalNodeMap.js +5 -3
- package/lib/ruleNames.js +9 -1
- package/lib/utilities/json.js +59 -59
- package/lib/utilities/subproof.js +10 -10
- package/lib/verifier/combinator.js +9 -10
- package/lib/verifier/constructor.js +10 -11
- package/lib/verifier/topLevel.js +38 -31
- package/package.json +2 -2
- package/src/context/local.js +0 -14
- package/src/dom/axiom.js +30 -29
- package/src/dom/combinator.js +4 -4
- package/src/dom/conclusion.js +5 -5
- package/src/dom/conjecture.js +8 -8
- package/src/dom/constructor.js +4 -4
- package/src/dom/declaration/combinator.js +14 -14
- package/src/dom/declaration/complexType.js +35 -35
- package/src/dom/declaration/constructor.js +20 -20
- package/src/dom/declaration/metavariable.js +22 -22
- package/src/dom/declaration/simpleType.js +22 -22
- package/src/dom/declaration/variable.js +21 -21
- package/src/dom/declaration.js +5 -3
- package/src/dom/deduction.js +5 -5
- package/src/dom/derivation.js +5 -5
- package/src/dom/error.js +8 -8
- package/src/dom/hypothesis.js +230 -0
- package/src/dom/label.js +17 -19
- package/src/dom/lemma.js +8 -8
- package/src/dom/metaLemma.js +8 -8
- package/src/dom/metaType.js +2 -6
- package/src/dom/metatheorem.js +8 -8
- package/src/dom/metavariable.js +9 -12
- package/src/dom/parameter.js +1 -1
- package/src/dom/premise.js +8 -8
- package/src/dom/procedureCall.js +9 -9
- package/src/dom/proof.js +2 -2
- package/src/dom/property.js +8 -8
- package/src/dom/reference.js +23 -27
- package/src/dom/rule.js +30 -30
- package/src/dom/section.js +70 -0
- package/src/dom/signature.js +4 -4
- package/src/dom/statement.js +24 -32
- package/src/dom/step.js +4 -4
- package/src/dom/subDerivation.js +5 -5
- package/src/dom/subproof.js +8 -8
- package/src/dom/substitution/statement.js +5 -5
- package/src/dom/supposition.js +7 -7
- package/src/dom/term.js +3 -8
- package/src/dom/theorem.js +7 -7
- package/src/dom/topLevelAssertion.js +29 -30
- package/src/dom/topLevelMetaAssertion.js +20 -20
- package/src/dom/type.js +22 -22
- package/src/dom/variable.js +8 -11
- package/src/index.js +2 -0
- package/src/node/hypothesis.js +23 -0
- package/src/node/section.js +16 -0
- package/src/nonTerminalNodeMap.js +7 -1
- package/src/ruleNames.js +2 -0
- package/src/utilities/json.js +58 -58
- package/src/utilities/subproof.js +10 -10
- package/src/verifier/combinator.js +6 -11
- package/src/verifier/constructor.js +9 -12
- package/src/verifier/topLevel.js +42 -30
package/lib/utilities/json.js
CHANGED
|
@@ -193,248 +193,248 @@ function _interop_require_default(obj) {
|
|
|
193
193
|
default: obj
|
|
194
194
|
};
|
|
195
195
|
}
|
|
196
|
-
function termFromJSON(json,
|
|
196
|
+
function termFromJSON(json, context) {
|
|
197
197
|
var term = json.term;
|
|
198
198
|
var termJSON = term; ///
|
|
199
199
|
json = termJSON; ///
|
|
200
200
|
var Term = _dom.default.Term;
|
|
201
|
-
term = Term.fromJSON(json,
|
|
201
|
+
term = Term.fromJSON(json, context);
|
|
202
202
|
return term;
|
|
203
203
|
}
|
|
204
|
-
function typeFromJSON(json,
|
|
204
|
+
function typeFromJSON(json, context) {
|
|
205
205
|
var type = json.type;
|
|
206
206
|
if (type !== null) {
|
|
207
207
|
var name = type.name, typeName = name; ///
|
|
208
|
-
type =
|
|
208
|
+
type = context.findTypeByTypeName(typeName);
|
|
209
209
|
}
|
|
210
210
|
return type;
|
|
211
211
|
}
|
|
212
|
-
function metaTypeFromJSON(json,
|
|
212
|
+
function metaTypeFromJSON(json, context) {
|
|
213
213
|
var metaType = json.metaType;
|
|
214
214
|
if (metaType !== null) {
|
|
215
215
|
var name = metaType.name, metaTypeName = name; ///
|
|
216
|
-
metaType =
|
|
216
|
+
metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
217
217
|
}
|
|
218
218
|
return metaType;
|
|
219
219
|
}
|
|
220
|
-
function statementFromJSON(json,
|
|
220
|
+
function statementFromJSON(json, context) {
|
|
221
221
|
var _json_statement = json.statement, statement = _json_statement === void 0 ? null : _json_statement;
|
|
222
222
|
if (statement !== null) {
|
|
223
223
|
var Statement = _dom.default.Statement, statementJSON = statement; ///
|
|
224
224
|
json = statementJSON; ///
|
|
225
|
-
statement = Statement.fromJSON(json,
|
|
225
|
+
statement = Statement.fromJSON(json, context);
|
|
226
226
|
}
|
|
227
227
|
return statement;
|
|
228
228
|
}
|
|
229
|
-
function referenceFromJSON(json,
|
|
229
|
+
function referenceFromJSON(json, context) {
|
|
230
230
|
var reference = json.reference;
|
|
231
231
|
var Reference = _dom.default.Reference, referenceJSON = reference; ///
|
|
232
232
|
json = referenceJSON; ///
|
|
233
|
-
reference = Reference.fromJSON(json,
|
|
233
|
+
reference = Reference.fromJSON(json, context);
|
|
234
234
|
return reference;
|
|
235
235
|
}
|
|
236
|
-
function deductionFromJSON(json,
|
|
236
|
+
function deductionFromJSON(json, context) {
|
|
237
237
|
var deduction = json.deduction;
|
|
238
238
|
var Deduction = _dom.default.Deduction, deductionJSON = deduction; ///
|
|
239
239
|
json = deductionJSON; ///
|
|
240
|
-
deduction = Deduction.fromJSON(json,
|
|
240
|
+
deduction = Deduction.fromJSON(json, context);
|
|
241
241
|
return deduction;
|
|
242
242
|
}
|
|
243
|
-
function signatureFromJSON(json,
|
|
243
|
+
function signatureFromJSON(json, context) {
|
|
244
244
|
var _json_signature = json.signature, signature = _json_signature === void 0 ? null : _json_signature;
|
|
245
245
|
if (signature !== null) {
|
|
246
246
|
var Signature = _dom.default.Signature, signatureJSON = signature; ///
|
|
247
247
|
json = signatureJSON; ///
|
|
248
|
-
signature = Signature.fromJSON(json,
|
|
248
|
+
signature = Signature.fromJSON(json, context);
|
|
249
249
|
}
|
|
250
250
|
return signature;
|
|
251
251
|
}
|
|
252
|
-
function conclusionFromJSON(json,
|
|
252
|
+
function conclusionFromJSON(json, context) {
|
|
253
253
|
var conclusion = json.conclusion;
|
|
254
254
|
var Conclusion = _dom.default.Conclusion, conclusionJSON = conclusion; ///
|
|
255
255
|
json = conclusionJSON; ///
|
|
256
|
-
conclusion = Conclusion.fromJSON(json,
|
|
256
|
+
conclusion = Conclusion.fromJSON(json, context);
|
|
257
257
|
return conclusion;
|
|
258
258
|
}
|
|
259
|
-
function metavariableFromJSON(json,
|
|
259
|
+
function metavariableFromJSON(json, context) {
|
|
260
260
|
var metavariable = json.metavariable;
|
|
261
261
|
var Metavariable = _dom.default.Metavariable, metavariableJSON = metavariable; ///
|
|
262
262
|
json = metavariableJSON; ///
|
|
263
|
-
metavariable = Metavariable.fromJSON(json,
|
|
263
|
+
metavariable = Metavariable.fromJSON(json, context);
|
|
264
264
|
return metavariable;
|
|
265
265
|
}
|
|
266
|
-
function procedureCallFromJSON(json,
|
|
266
|
+
function procedureCallFromJSON(json, context) {
|
|
267
267
|
var _json_procedureCall = json.procedureCall, procedureCall = _json_procedureCall === void 0 ? null : _json_procedureCall;
|
|
268
268
|
if (procedureCall !== null) {
|
|
269
269
|
var ProcedureCall = _dom.default.ProcedureCall, procedureCallJSON = procedureCall; ///
|
|
270
270
|
json = procedureCallJSON; ///
|
|
271
|
-
procedureCall = ProcedureCall.fromJSON(json,
|
|
271
|
+
procedureCall = ProcedureCall.fromJSON(json, context);
|
|
272
272
|
}
|
|
273
273
|
return procedureCall;
|
|
274
274
|
}
|
|
275
|
-
function typesFromJSON(json, types,
|
|
275
|
+
function typesFromJSON(json, types, context) {
|
|
276
276
|
var typesJSON = json.types;
|
|
277
277
|
var Type = _dom.default.Type;
|
|
278
278
|
typesJSON.forEach(function(typeJSON) {
|
|
279
|
-
var _$json = typeJSON, type = Type.fromJSON(_$json,
|
|
279
|
+
var _$json = typeJSON, type = Type.fromJSON(_$json, context);
|
|
280
280
|
types.push(type);
|
|
281
281
|
});
|
|
282
282
|
}
|
|
283
|
-
function termsFromJSON(json,
|
|
283
|
+
function termsFromJSON(json, context) {
|
|
284
284
|
var terms = json.terms;
|
|
285
285
|
var Term = _dom.default.Term, termsJSON = terms; ///
|
|
286
286
|
terms = termsJSON.map(function(termJSON) {
|
|
287
|
-
var _$json = termJSON, term = Term.fromJSON(_$json,
|
|
287
|
+
var _$json = termJSON, term = Term.fromJSON(_$json, context);
|
|
288
288
|
return term;
|
|
289
289
|
});
|
|
290
290
|
return terms;
|
|
291
291
|
}
|
|
292
|
-
function rulesFromJSON(json,
|
|
292
|
+
function rulesFromJSON(json, context) {
|
|
293
293
|
var rules = json.rules;
|
|
294
294
|
var Rule = _dom.default.Rule, rulesJSON = rules; ///
|
|
295
295
|
rules = rulesJSON.map(function(ruleJSON) {
|
|
296
|
-
var _$json = ruleJSON, rule = Rule.fromJSON(_$json,
|
|
296
|
+
var _$json = ruleJSON, rule = Rule.fromJSON(_$json, context);
|
|
297
297
|
return rule;
|
|
298
298
|
});
|
|
299
299
|
return rules;
|
|
300
300
|
}
|
|
301
|
-
function labelFromJSON(json,
|
|
301
|
+
function labelFromJSON(json, context) {
|
|
302
302
|
var label = json.label;
|
|
303
303
|
var Label = _dom.default.Label, labelJSON = label; ///
|
|
304
304
|
json = labelJSON; ///
|
|
305
|
-
label = Label.fromJSON(json,
|
|
305
|
+
label = Label.fromJSON(json, context);
|
|
306
306
|
return label;
|
|
307
307
|
}
|
|
308
|
-
function labelsFromJSON(json,
|
|
308
|
+
function labelsFromJSON(json, context) {
|
|
309
309
|
var labels = json.labels;
|
|
310
310
|
var Label = _dom.default.Label, labelsJSON = labels; ///
|
|
311
311
|
labels = labelsJSON.map(function(labelJSON) {
|
|
312
|
-
var _$json = labelJSON, label = Label.fromJSON(_$json,
|
|
312
|
+
var _$json = labelJSON, label = Label.fromJSON(_$json, context);
|
|
313
313
|
return label;
|
|
314
314
|
});
|
|
315
315
|
return labels;
|
|
316
316
|
}
|
|
317
|
-
function axiomsFromJSON(json,
|
|
317
|
+
function axiomsFromJSON(json, context) {
|
|
318
318
|
var axioms = json.axioms;
|
|
319
319
|
var Axiom = _dom.default.Axiom, axiomsJSON = axioms; ///
|
|
320
320
|
axioms = axiomsJSON.map(function(axiomJSON) {
|
|
321
|
-
var _$json = axiomJSON, axiom = Axiom.fromJSON(_$json,
|
|
321
|
+
var _$json = axiomJSON, axiom = Axiom.fromJSON(_$json, context);
|
|
322
322
|
return axiom;
|
|
323
323
|
});
|
|
324
324
|
return axioms;
|
|
325
325
|
}
|
|
326
|
-
function premisesFromJSON(json,
|
|
326
|
+
function premisesFromJSON(json, context) {
|
|
327
327
|
var premises = json.premises;
|
|
328
328
|
var Premise = _dom.default.Premise, premisesJSON = premises; ///
|
|
329
329
|
premises = premisesJSON.map(function(premiseJSON) {
|
|
330
|
-
var _$json = premiseJSON, premise = Premise.fromJSON(_$json,
|
|
330
|
+
var _$json = premiseJSON, premise = Premise.fromJSON(_$json, context);
|
|
331
331
|
return premise;
|
|
332
332
|
});
|
|
333
333
|
return premises;
|
|
334
334
|
}
|
|
335
|
-
function theoremsFromJSON(json,
|
|
335
|
+
function theoremsFromJSON(json, context) {
|
|
336
336
|
var theorems = json.theorems;
|
|
337
337
|
var Theorem = _dom.default.Theorem, theoremsJSON = theorems; ///
|
|
338
338
|
theorems = theoremsJSON.map(function(theoremJSON) {
|
|
339
|
-
var _$json = theoremJSON, theorem = Theorem.fromJSON(_$json,
|
|
339
|
+
var _$json = theoremJSON, theorem = Theorem.fromJSON(_$json, context);
|
|
340
340
|
return theorem;
|
|
341
341
|
});
|
|
342
342
|
return theorems;
|
|
343
343
|
}
|
|
344
|
-
function variablesFromJSON(json,
|
|
344
|
+
function variablesFromJSON(json, context) {
|
|
345
345
|
var variables = json.variables;
|
|
346
346
|
var Variable = _dom.default.Variable, variablesJSON = variables; ///
|
|
347
347
|
variables = variablesJSON.map(function(variableJSON) {
|
|
348
|
-
var _$json = variableJSON, variable = Variable.fromJSON(_$json,
|
|
348
|
+
var _$json = variableJSON, variable = Variable.fromJSON(_$json, context);
|
|
349
349
|
return variable;
|
|
350
350
|
});
|
|
351
351
|
return variables;
|
|
352
352
|
}
|
|
353
|
-
function propertiesFromJSON(json,
|
|
353
|
+
function propertiesFromJSON(json, context) {
|
|
354
354
|
var properties = json.properties;
|
|
355
355
|
var Property = _dom.default.Property, propertiesJSON = properties; ///
|
|
356
356
|
properties = propertiesJSON.map(function(propertyJSON) {
|
|
357
|
-
var _$json = propertyJSON, property = Property.fromJSON(_$json,
|
|
357
|
+
var _$json = propertyJSON, property = Property.fromJSON(_$json, context);
|
|
358
358
|
return property;
|
|
359
359
|
});
|
|
360
360
|
return properties;
|
|
361
361
|
}
|
|
362
|
-
function superTypesFromJSON(json,
|
|
362
|
+
function superTypesFromJSON(json, context) {
|
|
363
363
|
var superTypesJSON = json.superTypes;
|
|
364
364
|
var superTypes = superTypesJSON.map(function(superTypeJSON) {
|
|
365
|
-
var _$json = superTypeJSON, name = _$json.name, superTypeName = name, superType =
|
|
365
|
+
var _$json = superTypeJSON, name = _$json.name, superTypeName = name, superType = context.findTypeByTypeName(superTypeName);
|
|
366
366
|
return superType;
|
|
367
367
|
});
|
|
368
368
|
return superTypes;
|
|
369
369
|
}
|
|
370
|
-
function parametersFromJSON(json,
|
|
370
|
+
function parametersFromJSON(json, context) {
|
|
371
371
|
var parameters = json.parameters;
|
|
372
372
|
var Parameter = _dom.default.Parameter, parametersJSON = parameters; ///
|
|
373
373
|
parameters = parametersJSON.map(function(parameterJSON) {
|
|
374
|
-
var _$json = parameterJSON, parameter = Parameter.fromJSON(_$json,
|
|
374
|
+
var _$json = parameterJSON, parameter = Parameter.fromJSON(_$json, context);
|
|
375
375
|
return parameter;
|
|
376
376
|
});
|
|
377
377
|
return parameters;
|
|
378
378
|
}
|
|
379
|
-
function conjecturesFromJSON(json,
|
|
379
|
+
function conjecturesFromJSON(json, context) {
|
|
380
380
|
var conjectures = json.conjectures;
|
|
381
381
|
var Conjecture = _dom.default.Conjecture, conjecturesJSON = conjectures; ///
|
|
382
382
|
conjectures = conjecturesJSON.map(function(conjectureJSON) {
|
|
383
|
-
var _$json = conjectureJSON, conjecture = Conjecture.fromJSON(_$json,
|
|
383
|
+
var _$json = conjectureJSON, conjecture = Conjecture.fromJSON(_$json, context);
|
|
384
384
|
return conjecture;
|
|
385
385
|
});
|
|
386
386
|
return conjectures;
|
|
387
387
|
}
|
|
388
|
-
function combinatorsFromJSON(json,
|
|
388
|
+
function combinatorsFromJSON(json, context) {
|
|
389
389
|
var combinators = json.combinators;
|
|
390
390
|
var Combinator = _dom.default.Combinator, combinatorsJSON = combinators; ///
|
|
391
391
|
combinators = combinatorsJSON.map(function(combinatorJSON) {
|
|
392
|
-
var _$json = combinatorJSON, combinator = Combinator.fromJSON(_$json,
|
|
392
|
+
var _$json = combinatorJSON, combinator = Combinator.fromJSON(_$json, context);
|
|
393
393
|
return combinator;
|
|
394
394
|
});
|
|
395
395
|
return combinators;
|
|
396
396
|
}
|
|
397
|
-
function constructorsFromJSON(json,
|
|
397
|
+
function constructorsFromJSON(json, context) {
|
|
398
398
|
var constructors = json.constructors;
|
|
399
399
|
var Constructor = _dom.default.Constructor, constructorsJSON = constructors; ///
|
|
400
400
|
constructors = constructorsJSON.map(function(constructorJSON) {
|
|
401
|
-
var _$json = constructorJSON, constructor = Constructor.fromJSON(_$json,
|
|
401
|
+
var _$json = constructorJSON, constructor = Constructor.fromJSON(_$json, context);
|
|
402
402
|
return constructor;
|
|
403
403
|
});
|
|
404
404
|
return constructors;
|
|
405
405
|
}
|
|
406
|
-
function metatheoremsFromJSON(json,
|
|
406
|
+
function metatheoremsFromJSON(json, context) {
|
|
407
407
|
var metatheorems = json.metatheorems;
|
|
408
408
|
var Metatheorem = _dom.default.Metatheorem, metatheoremsJSON = metatheorems; ///
|
|
409
409
|
metatheorems = metatheoremsJSON.map(function(metatheoremJSON) {
|
|
410
|
-
var _$json = metatheoremJSON, metatheorem = Metatheorem.fromJSON(_$json,
|
|
410
|
+
var _$json = metatheoremJSON, metatheorem = Metatheorem.fromJSON(_$json, context);
|
|
411
411
|
return metatheorem;
|
|
412
412
|
});
|
|
413
413
|
return metatheorems;
|
|
414
414
|
}
|
|
415
|
-
function suppositionsFromJSON(json,
|
|
415
|
+
function suppositionsFromJSON(json, context) {
|
|
416
416
|
var suppositions = json.suppositions;
|
|
417
417
|
var Supposition = _dom.default.Supposition, suppositionsJSON = suppositions; ///
|
|
418
418
|
suppositions = suppositionsJSON.map(function(suppositionJSON) {
|
|
419
|
-
var _$json = suppositionJSON, supposition = Supposition.fromJSON(_$json,
|
|
419
|
+
var _$json = suppositionJSON, supposition = Supposition.fromJSON(_$json, context);
|
|
420
420
|
return supposition;
|
|
421
421
|
});
|
|
422
422
|
return suppositions;
|
|
423
423
|
}
|
|
424
|
-
function substitutionsFromJSON(json,
|
|
424
|
+
function substitutionsFromJSON(json, context) {
|
|
425
425
|
var _json_substitutions = json.substitutions, substitutions = _json_substitutions === void 0 ? [] : _json_substitutions; ///
|
|
426
426
|
var StatementSubstitution = _dom.default.StatementSubstitution, substitutionsJSON = substitutions, Substitution = StatementSubstitution; ///
|
|
427
427
|
substitutions = substitutionsJSON.map(function(substitutionJSON) {
|
|
428
|
-
var _$json = substitutionJSON, substitution = Substitution.fromJSON(_$json,
|
|
428
|
+
var _$json = substitutionJSON, substitution = Substitution.fromJSON(_$json, context);
|
|
429
429
|
return substitution;
|
|
430
430
|
});
|
|
431
431
|
return substitutions;
|
|
432
432
|
}
|
|
433
|
-
function metavariablesFromJSON(json,
|
|
433
|
+
function metavariablesFromJSON(json, context) {
|
|
434
434
|
var metavariables = json.metavariables;
|
|
435
435
|
var Metavariable = _dom.default.Metavariable, metavariablesJSON = metavariables; ///
|
|
436
436
|
metavariables = metavariablesJSON.map(function(metavariableJSON) {
|
|
437
|
-
var _$json = metavariableJSON, metavariable = Metavariable.fromJSON(_$json,
|
|
437
|
+
var _$json = metavariableJSON, metavariable = Metavariable.fromJSON(_$json, context);
|
|
438
438
|
return metavariable;
|
|
439
439
|
});
|
|
440
440
|
return metavariables;
|
|
@@ -637,4 +637,4 @@ function metavariablesToMetavariablesJSON(metavariables) {
|
|
|
637
637
|
return metavariablesJSON;
|
|
638
638
|
}
|
|
639
639
|
|
|
640
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdGVybSB9ID0ganNvbjtcblxuICBjb25zdCB0ZXJtSlNPTiA9IHRlcm07ICAvLy9cblxuICBqc29uID0gdGVybUpTT047ICAvLy9cblxuICBjb25zdCB7IFRlcm0gfSA9IGRvbTtcblxuICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZSB9ID0ganNvbjtcblxuICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgbmFtZSB9ID0gdHlwZSxcbiAgICAgICAgICB0eXBlTmFtZSA9IG5hbWU7ICAvLy9cblxuICAgIHR5cGUgPSBmaWxlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgbmFtZSB9ID0gbWV0YVR5cGUsXG4gICAgICAgICAgbWV0YVR5cGVOYW1lID0gbmFtZTsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaWxlQ29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50RnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50ID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGRvbSxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBqc29uID0gc3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZG9tLFxuICAgICAgICByZWZlcmVuY2VKU09OID0gcmVmZXJlbmNlOyAgLy8vXG5cbiAganNvbiA9IHJlZmVyZW5jZUpTT047ICAvLy9cblxuICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBkZWR1Y3Rpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBEZWR1Y3Rpb24gfSA9IGRvbSxcbiAgICAgICAgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvbjsgIC8vL1xuXG4gIGpzb24gPSBkZWR1Y3Rpb25KU09OOyAgLy8vXG5cbiAgZGVkdWN0aW9uID0gRGVkdWN0aW9uLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGRvbSxcbiAgICAgICAgICBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlOyAgLy8vXG5cbiAgICBqc29uID0gc2lnbmF0dXJlSlNPTjsgLy8vXG5cbiAgICBzaWduYXR1cmUgPSBTaWduYXR1cmUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Gcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBjb25jbHVzaW9uIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uY2x1c2lvbiB9ID0gZG9tLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBtZXRhdmFyaWFibGUgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGRvbSxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlQ2FsbCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHByb2NlZHVyZUNhbGwgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFByb2NlZHVyZUNhbGwgfSA9IGRvbSxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsSlNPTiA9IHByb2NlZHVyZUNhbGw7ICAvLy9cblxuICAgIGpzb24gPSBwcm9jZWR1cmVDYWxsSlNPTjsgLy8vXG5cbiAgICBwcm9jZWR1cmVDYWxsID0gUHJvY2VkdXJlQ2FsbC5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzRnJvbUpTT04oanNvbiwgdHlwZXMsIGZpbGVDb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGRvbTtcblxuICB0eXBlc0pTT04uZm9yRWFjaCgodHlwZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdGVybXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUZXJtIH0gPSBkb20sXG4gICAgICAgIHRlcm1zSlNPTiA9IHRlcm1zOyAvLy9cblxuICB0ZXJtcyA9IHRlcm1zSlNPTi5tYXAoKHRlcm1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRlcm1KU09OLCAgLy8vXG4gICAgICAgICAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBkb20sXG4gICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgIHJ1bGUgPSBSdWxlLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGxhYmVsIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGRvbSxcbiAgICAgICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBsYWJlbHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZG9tLFxuICAgICAgICBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsYWJlbEpTT04sIC8vL1xuICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgYXhpb21zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXhpb20gfSA9IGRvbSxcbiAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tczsgLy8vXG5cbiAgYXhpb21zID0gYXhpb21zSlNPTi5tYXAoKGF4aW9tSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBheGlvbUpTT04sICAvLy9cbiAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgcHJlbWlzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcmVtaXNlIH0gPSBkb20sXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUaGVvcmVtIH0gPSBkb20sXG4gICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zOyAvLy9cblxuICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTi5tYXAoKHRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBkb20sXG4gICAgICAgIHZhcmlhYmxlc0pTT04gPSB2YXJpYWJsZXM7IC8vL1xuXG4gIHZhcmlhYmxlcyA9IHZhcmlhYmxlc0pTT04ubWFwKCh2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgcHJvcGVydGllcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByb3BlcnR5IH0gPSBkb20sXG4gICAgICAgIHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllczsgLy8vXG5cbiAgcHJvcGVydGllcyA9IHByb3BlcnRpZXNKU09OLm1hcCgocHJvcGVydHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5SlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5ID0gUHJvcGVydHkuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBjb25zdCB7IHN1cGVyVHlwZXM6IHN1cGVyVHlwZXNKU09OIH0gPSBqc29uO1xuXG4gIGNvbnN0IHN1cGVyVHlwZXMgPSBzdXBlclR5cGVzSlNPTi5tYXAoKHN1cGVyVHlwZUpTT04pID0+IHtcbiAgICAgICAgICBjb25zdCBqc29uID0gc3VwZXJUeXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAgICAgIHsgbmFtZSB9ID0ganNvbixcbiAgICAgICAgICAgICAgICBzdXBlclR5cGVOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICAgICAgICAgIHN1cGVyVHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZShzdXBlclR5cGVOYW1lKTtcblxuICAgICAgICAgIHJldHVybiBzdXBlclR5cGU7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHBhcmFtZXRlcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQYXJhbWV0ZXIgfSA9IGRvbSxcbiAgICAgICAgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzOyAvLy9cblxuICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0pTT04ubWFwKChwYXJhbWV0ZXJKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHBhcmFtZXRlckpTT04sICAvLy9cbiAgICAgICAgICBwYXJhbWV0ZXIgPSBQYXJhbWV0ZXIuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGNvbmplY3R1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gZG9tLFxuICAgICAgICBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlczsgLy8vXG5cbiAgY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0pTT04ubWFwKChjb25qZWN0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25qZWN0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbmplY3R1cmUgPSBDb25qZWN0dXJlLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29tYmluYXRvciB9ID0gZG9tLFxuICAgICAgICBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9yczsgLy8vXG5cbiAgY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0pTT04ubWFwKChjb21iaW5hdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb21iaW5hdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3IgPSBDb21iaW5hdG9yLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBjb25zdHJ1Y3RvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJ1Y3RvciB9ID0gZG9tLFxuICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzOyAvLy9cblxuICBjb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnNKU09OLm1hcCgoY29uc3RydWN0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbnN0cnVjdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3IuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXRoZW9yZW0gfSA9IGRvbSxcbiAgICAgICAgbWV0YXRoZW9yZW1zSlNPTiA9IG1ldGF0aGVvcmVtczsgLy8vXG5cbiAgbWV0YXRoZW9yZW1zID0gbWV0YXRoZW9yZW1zSlNPTi5tYXAoKG1ldGF0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdGhlb3JlbUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdGhlb3JlbSA9IE1ldGF0aGVvcmVtLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHN1cHBvc2l0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN1cHBvc2l0aW9uIH0gPSBkb20sXG4gICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnM7ICAvLy9cblxuICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLm1hcCgoc3VwcG9zaXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1cHBvc2l0aW9uSlNPTiwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb24gPSBTdXBwb3NpdGlvbi5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgc3Vic3RpdHV0aW9ucyA9IFtdIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3QgeyBTdGF0ZW1lbnRTdWJzdGl0dXRpb24gfSA9IGRvbSxcbiAgICAgICAgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLCAgLy8vXG4gICAgICAgIFN1YnN0aXR1dGlvbiA9IFN0YXRlbWVudFN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OLm1hcCgoc3Vic3RpdHV0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdWJzdGl0dXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGRvbSxcbiAgICAgICAgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzOyAvLy9cblxuICBtZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlc0pTT04ubWFwKChtZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgcmV0dXJuIGxlbW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbWV0YUxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBtZXRhTGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybVRvVGVybUpTT04odGVybSkge1xuICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgcmV0dXJuIHRlcm1KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvVHlwZUpTT04odHlwZSkge1xuICBjb25zdCB0eXBlSlNPTiA9ICh0eXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICB0eXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gdHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbFRvTGFiZWxKU09OKGxhYmVsKSB7XG4gIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gIHJldHVybiBsYWJlbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZVRvTWV0YVR5cGVKU09OKG1ldGFUeXBlKSB7XG4gIGNvbnN0IG1ldGFUeXBlSlNPTiA9IChtZXRhVHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFUeXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG4gIHJldHVybiBtZXRhVHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04oc3RhdGVtZW50KSB7XG4gIGxldCBzdGF0ZW1lbnRKU09OID0gbnVsbDtcblxuICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudC50b0pTT04oKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBsZXQgc2lnbmF0dXJlSlNPTiA9IG51bGw7XG5cbiAgaWYgKHNpZ25hdHVyZSAhPT0gbnVsbCkge1xuICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmUudG9KU09OKCk7XG4gIH1cblxuICByZXR1cm4gc2lnbmF0dXJlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTihtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OKHByb2NlZHVyZUNhbGwpIHtcbiAgbGV0IHByb2NlZHVyZUNhbGxKU09OID0gbnVsbDtcblxuICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgIHByb2NlZHVyZUNhbGxKU09OID0gcHJvY2VkdXJlQ2FsbC50b0pTT04oKTtcbiAgfVxuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgdHlwZSA9IHR5cGVKU09OOyAvLy9cblxuICAgIHJldHVybiB0eXBlO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcykge1xuICBjb25zdCB0ZXJtc0pTT04gPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgICB0ZXJtID0gdGVybUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc1RvUnVsZXNKU09OKHJ1bGVzKSB7XG4gIGNvbnN0IHJ1bGVzSlNPTiA9IHJ1bGVzLm1hcCgocnVsZSkgPT4ge1xuICAgIGNvbnN0IHJ1bGVKU09OID0gcnVsZS50b0pTT04oKTtcblxuICAgIHJ1bGUgPSBydWxlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1RvTGFiZWxzSlNPTihsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbGFiZWxKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc1RvQXhpb21zSlNPTihheGlvbXMpIHtcbiAgY29uc3QgYXhpb21zSlNPTiA9IGF4aW9tcy5tYXAoKGF4aW9tKSA9PiB7XG4gICAgY29uc3QgYXhpb21KU09OID0gYXhpb20udG9KU09OKCk7XG5cbiAgICBheGlvbSA9IGF4aW9tSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHRoZW9yZW0gPSB0aGVvcmVtSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTih2YXJpYWJsZXMpIHtcbiAgY29uc3QgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVKU09OID0gdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICB2YXJpYWJsZSA9IHZhcmlhYmxlSlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHN1cGVyVHlwZXMpIHtcbiAgY29uc3Qgc3VwZXJUeXBlc0pTT04gPSBzdXBlclR5cGVzLm1hcCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgY29uc3Qgc3VwZXJUeXBlSlNPTiA9IHN1cGVyVHlwZS50b0pTT04oKTtcblxuICAgIHN1cGVyVHlwZSA9IHN1cGVyVHlwZUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04ocGFyYW1ldGVycykge1xuICBjb25zdCBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnMubWFwKChwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJKU09OID0gcGFyYW1ldGVyLnRvSlNPTigpO1xuXG4gICAgcGFyYW1ldGVyID0gcGFyYW1ldGVySlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc1RvUHJvcGVydGllc0pTT04ocHJvcGVydGllcykge1xuICBjb25zdCBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXMubWFwKChwcm9wZXJ0eSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5SlNPTiA9IHByb3BlcnR5LnRvSlNPTigpO1xuXG4gICAgcHJvcGVydHkgPSBwcm9wZXJ0eUpTT047ICAvLy9cblxuICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTihjb25qZWN0dXJlcykge1xuICBjb25zdCBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlcy5tYXAoKGNvbmplY3R1cmUpID0+IHtcbiAgICBjb25zdCBjb25qZWN0dXJlSlNPTiA9IGNvbmplY3R1cmUudG9KU09OKCk7XG5cbiAgICBjb25qZWN0dXJlID0gY29uamVjdHVyZUpTT047IC8vL1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OKGNvbWJpbmF0b3JzKSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzLm1hcCgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JKU09OID0gY29tYmluYXRvci50b0pTT04oKTtcblxuICAgIGNvbWJpbmF0b3IgPSBjb21iaW5hdG9ySlNPTjsgLy8vXG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTihzdXBwb3NpdGlvbnMpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9ucy5tYXAoKHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25KU09OID0gc3VwcG9zaXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTihjb25zdHJ1Y3RvcnMpIHtcbiAgY29uc3QgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9ycy5tYXAoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgY29uc3QgY29uc3RydWN0b3JKU09OID0gY29uc3RydWN0b3IudG9KU09OKCk7XG5cbiAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9ySlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF0aGVvcmVtc1RvTWV0YXRoZW9yZW1zSlNPTihtZXRhdGhlb3JlbXMpIHtcbiAgY29uc3QgbWV0YXRoZW9yZW1zSlNPTiA9IG1ldGF0aGVvcmVtcy5tYXAoKG1ldGF0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgbWV0YXRoZW9yZW1KU09OID0gbWV0YXRoZW9yZW0udG9KU09OKCk7XG5cbiAgICBtZXRhdGhlb3JlbSA9IG1ldGF0aGVvcmVtSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gbWV0YXRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc1RvU3Vic3RpdHV0aW9uc0pTT04oc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnMubWFwU3Vic3RpdHV0aW9uKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25KU09OID0gc3Vic3RpdHV0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OKG1ldGF2YXJpYWJsZXMpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzLm1hcCgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUpTT047ICAvLy9cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzSlNPTjtcbn1cbiJdLCJuYW1lcyI6WyJheGlvbXNGcm9tSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwiY29uY2x1c2lvbkZyb21KU09OIiwiY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhTGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF0aGVvcmVtc0Zyb21KU09OIiwibWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb3BlcnRpZXNGcm9tSlNPTiIsInByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OIiwicmVmZXJlbmNlRnJvbUpTT04iLCJydWxlc0Zyb21KU09OIiwicnVsZXNUb1J1bGVzSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwic3RhdGVtZW50RnJvbUpTT04iLCJzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04iLCJzdWJzdGl0dXRpb25zRnJvbUpTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJ0ZXJtRnJvbUpTT04iLCJ0ZXJtVG9UZXJtSlNPTiIsInRlcm1zRnJvbUpTT04iLCJ0ZXJtc1RvVGVybXNKU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsInR5cGVzRnJvbUpTT04iLCJ0eXBlc1RvVHlwZXNKU09OIiwidmFyaWFibGVzRnJvbUpTT04iLCJ2YXJpYWJsZXNUb1ZhcmlhYmxlc0pTT04iLCJqc29uIiwiZmlsZUNvbnRleHQiLCJ0ZXJtIiwidGVybUpTT04iLCJUZXJtIiwiZG9tIiwiZnJvbUpTT04iLCJ0eXBlIiwibmFtZSIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwibWV0YVR5cGUiLCJtZXRhVHlwZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsInN0YXRlbWVudCIsIlN0YXRlbWVudCIsInN0YXRlbWVudEpTT04iLCJyZWZlcmVuY2UiLCJSZWZlcmVuY2UiLCJyZWZlcmVuY2VKU09OIiwiZGVkdWN0aW9uIiwiRGVkdWN0aW9uIiwiZGVkdWN0aW9uSlNPTiIsInNpZ25hdHVyZSIsIlNpZ25hdHVyZSIsInNpZ25hdHVyZUpTT04iLCJjb25jbHVzaW9uIiwiQ29uY2x1c2lvbiIsImNvbmNsdXNpb25KU09OIiwibWV0YXZhcmlhYmxlIiwiTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlSlNPTiIsInByb2NlZHVyZUNhbGwiLCJQcm9jZWR1cmVDYWxsIiwicHJvY2VkdXJlQ2FsbEpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJsYWJlbCIsIkxhYmVsIiwibGFiZWxKU09OIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwicHJlbWlzZXMiLCJQcmVtaXNlIiwicHJlbWlzZXNKU09OIiwicHJlbWlzZUpTT04iLCJwcmVtaXNlIiwidGhlb3JlbXMiLCJUaGVvcmVtIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJ0aGVvcmVtIiwidmFyaWFibGVzIiwiVmFyaWFibGUiLCJ2YXJpYWJsZXNKU09OIiwidmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJwcm9wZXJ0aWVzIiwiUHJvcGVydHkiLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5SlNPTiIsInByb3BlcnR5Iiwic3VwZXJUeXBlcyIsInN1cGVyVHlwZXNKU09OIiwic3VwZXJUeXBlSlNPTiIsInN1cGVyVHlwZU5hbWUiLCJzdXBlclR5cGUiLCJwYXJhbWV0ZXJzIiwiUGFyYW1ldGVyIiwicGFyYW1ldGVyc0pTT04iLCJwYXJhbWV0ZXJKU09OIiwicGFyYW1ldGVyIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiY29uc3RydWN0b3JzIiwiQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JKU09OIiwiY29uc3RydWN0b3IiLCJtZXRhdGhlb3JlbXMiLCJNZXRhdGhlb3JlbSIsIm1ldGF0aGVvcmVtc0pTT04iLCJtZXRhdGhlb3JlbUpTT04iLCJtZXRhdGhlb3JlbSIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbnNKU09OIiwiU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzSlNPTiIsImxlbW1hcyIsIm1ldGFMZW1tYXMiLCJ0b0pTT04iLCJtZXRhVHlwZUpTT04iLCJtYXBTdWJzdGl0dXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXVOZ0JBO2VBQUFBOztRQXFXQUM7ZUFBQUE7O1FBdE9BQztlQUFBQTs7UUFvVUFDO2VBQUFBOztRQXRqQkFDO2VBQUFBOztRQW9aQUM7ZUFBQUE7O1FBbExBQztlQUFBQTs7UUF3VUFDO2VBQUFBOztRQXhTQUM7ZUFBQUE7O1FBMFVBQztlQUFBQTs7UUF4bUJBQztlQUFBQTs7UUFnYUFDO2VBQUFBOztRQTlTQUM7ZUFBQUE7O1FBdVJBQztlQUFBQTs7UUExUUFDO2VBQUFBOztRQTJXQUM7ZUFBQUE7O1FBM0hBQztlQUFBQTs7UUFNQUM7ZUFBQUE7O1FBOVpBQztlQUFBQTs7UUF3YkFDO2VBQUFBOztRQWpHQUM7ZUFBQUE7O1FBc1VBQztlQUFBQTs7UUEza0JBQztlQUFBQTs7UUE2WUFDO2VBQUFBOztRQXZGQUM7ZUFBQUE7O1FBMlNBQztlQUFBQTs7UUE1WkFDO2VBQUFBOztRQWdVQUM7ZUFBQUE7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
|
|
640
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0ZXJtIH0gPSBqc29uO1xuXG4gIGNvbnN0IHRlcm1KU09OID0gdGVybTsgIC8vL1xuXG4gIGpzb24gPSB0ZXJtSlNPTjsgIC8vL1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gZG9tO1xuXG4gIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZSB9ID0ganNvbjtcblxuICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgbmFtZSB9ID0gdHlwZSxcbiAgICAgICAgICB0eXBlTmFtZSA9IG5hbWU7ICAvLy9cblxuICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhVHlwZSB9ID0ganNvbjtcblxuICBpZiAobWV0YVR5cGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IG1ldGFUeXBlLFxuICAgICAgICAgIG1ldGFUeXBlTmFtZSA9IG5hbWU7ICAvLy9cblxuICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnQgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZG9tLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgIGpzb24gPSBzdGF0ZW1lbnRKU09OOyAvLy9cblxuICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZG9tLFxuICAgICAgICByZWZlcmVuY2VKU09OID0gcmVmZXJlbmNlOyAgLy8vXG5cbiAganNvbiA9IHJlZmVyZW5jZUpTT047ICAvLy9cblxuICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVjdGlvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZGVkdWN0aW9uIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRGVkdWN0aW9uIH0gPSBkb20sXG4gICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb247ICAvLy9cblxuICBqc29uID0gZGVkdWN0aW9uSlNPTjsgIC8vL1xuXG4gIGRlZHVjdGlvbiA9IERlZHVjdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzaWduYXR1cmUgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZG9tLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmU7ICAvLy9cblxuICAgIGpzb24gPSBzaWduYXR1cmVKU09OOyAvLy9cblxuICAgIHNpZ25hdHVyZSA9IFNpZ25hdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25jbHVzaW9uIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uY2x1c2lvbiB9ID0gZG9tLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBkb20sXG4gICAgICAgIG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGU7ICAvLy9cblxuICBqc29uID0gbWV0YXZhcmlhYmxlSlNPTjsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVDYWxsID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZG9tLFxuICAgICAgICAgIHByb2NlZHVyZUNhbGxKU09OID0gcHJvY2VkdXJlQ2FsbDsgIC8vL1xuXG4gICAganNvbiA9IHByb2NlZHVyZUNhbGxKU09OOyAvLy9cblxuICAgIHByb2NlZHVyZUNhbGwgPSBQcm9jZWR1cmVDYWxsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGRvbTtcblxuICB0eXBlc0pTT04uZm9yRWFjaCgodHlwZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gZG9tLFxuICAgICAgICB0ZXJtc0pTT04gPSB0ZXJtczsgLy8vXG5cbiAgdGVybXMgPSB0ZXJtc0pTT04ubWFwKCh0ZXJtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0ZXJtSlNPTiwgIC8vL1xuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJ1bGUgfSA9IGRvbSxcbiAgICBydWxlc0pTT04gPSBydWxlczsgLy8vXG5cbiAgcnVsZXMgPSBydWxlc0pTT04ubWFwKChydWxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBydWxlSlNPTiwgIC8vL1xuICAgICAgcnVsZSA9IFJ1bGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVsIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGRvbSxcbiAgICAgICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGRvbSxcbiAgICAgICAgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gIGxhYmVscyA9IGxhYmVsc0pTT04ubWFwKChsYWJlbEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBheGlvbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBeGlvbSB9ID0gZG9tLFxuICAgICAgICBheGlvbXNKU09OID0gYXhpb21zOyAvLy9cblxuICBheGlvbXMgPSBheGlvbXNKU09OLm1hcCgoYXhpb21KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGF4aW9tSlNPTiwgIC8vL1xuICAgICAgICAgIGF4aW9tID0gQXhpb20uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJlbWlzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcmVtaXNlIH0gPSBkb20sXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGhlb3JlbSB9ID0gZG9tLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGRvbSxcbiAgICAgICAgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlczsgLy8vXG5cbiAgdmFyaWFibGVzID0gdmFyaWFibGVzSlNPTi5tYXAoKHZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvcGVydGllcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByb3BlcnR5IH0gPSBkb20sXG4gICAgICAgIHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllczsgLy8vXG5cbiAgcHJvcGVydGllcyA9IHByb3BlcnRpZXNKU09OLm1hcCgocHJvcGVydHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5SlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5ID0gUHJvcGVydHkuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBzdXBlclR5cGVzOiBzdXBlclR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04ubWFwKChzdXBlclR5cGVKU09OKSA9PiB7XG4gICAgICAgICAgY29uc3QganNvbiA9IHN1cGVyVHlwZUpTT04sICAvLy9cbiAgICAgICAgICAgICAgICB7IG5hbWUgfSA9IGpzb24sXG4gICAgICAgICAgICAgICAgc3VwZXJUeXBlTmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgICAgICAgICBzdXBlclR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZShzdXBlclR5cGVOYW1lKTtcblxuICAgICAgICAgIHJldHVybiBzdXBlclR5cGU7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcGFyYW1ldGVycyB9ID0ganNvbjtcblxuICBjb25zdCB7IFBhcmFtZXRlciB9ID0gZG9tLFxuICAgICAgICBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnM7IC8vL1xuXG4gIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzSlNPTi5tYXAoKHBhcmFtZXRlckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcGFyYW1ldGVySlNPTiwgIC8vL1xuICAgICAgICAgIHBhcmFtZXRlciA9IFBhcmFtZXRlci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmplY3R1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gZG9tLFxuICAgICAgICBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlczsgLy8vXG5cbiAgY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0pTT04ubWFwKChjb25qZWN0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25qZWN0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbmplY3R1cmUgPSBDb25qZWN0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb21iaW5hdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbWJpbmF0b3IgfSA9IGRvbSxcbiAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnM7IC8vL1xuXG4gIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLm1hcCgoY29tYmluYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29tYmluYXRvckpTT04sICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yID0gQ29tYmluYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cnVjdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBkb20sXG4gICAgICAgIGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnM7IC8vL1xuXG4gIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04ubWFwKChjb25zdHJ1Y3RvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uc3RydWN0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF0aGVvcmVtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXRoZW9yZW0gfSA9IGRvbSxcbiAgICAgICAgbWV0YXRoZW9yZW1zSlNPTiA9IG1ldGF0aGVvcmVtczsgLy8vXG5cbiAgbWV0YXRoZW9yZW1zID0gbWV0YXRoZW9yZW1zSlNPTi5tYXAoKG1ldGF0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdGhlb3JlbUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdGhlb3JlbSA9IE1ldGF0aGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdXBwb3NpdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdXBwb3NpdGlvbiB9ID0gZG9tLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zID0gW10gfSA9IGpzb247ICAvLy9cblxuICBjb25zdCB7IFN0YXRlbWVudFN1YnN0aXR1dGlvbiB9ID0gZG9tLFxuICAgICAgICBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnMsICAvLy9cbiAgICAgICAgU3Vic3RpdHV0aW9uID0gU3RhdGVtZW50U3Vic3RpdHV0aW9uOyAvLy9cblxuICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04ubWFwKChzdWJzdGl0dXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGRvbSxcbiAgICAgICAgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzOyAvLy9cblxuICBtZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlc0pTT04ubWFwKChtZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlbW1hc0Zyb21Ob3RoaW5nKCkge1xuICBjb25zdCBsZW1tYXMgPSBbXTtcblxuICByZXR1cm4gbGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YUxlbW1hc0Zyb21Ob3RoaW5nKCkge1xuICBjb25zdCBtZXRhTGVtbWFzID0gW107XG5cbiAgcmV0dXJuIG1ldGFMZW1tYXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtVG9UZXJtSlNPTih0ZXJtKSB7XG4gIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICByZXR1cm4gdGVybUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlVG9UeXBlSlNPTih0eXBlKSB7XG4gIGNvbnN0IHR5cGVKU09OID0gKHR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0eXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsVG9MYWJlbEpTT04obGFiZWwpIHtcbiAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgcmV0dXJuIGxhYmVsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlVG9NZXRhVHlwZUpTT04obWV0YVR5cGUpIHtcbiAgY29uc3QgbWV0YVR5cGVKU09OID0gKG1ldGFUeXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgbGV0IHN0YXRlbWVudEpTT04gPSBudWxsO1xuXG4gIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50LnRvSlNPTigpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04oZGVkdWN0aW9uKSB7XG4gIGNvbnN0IGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04oc2lnbmF0dXJlKSB7XG4gIGxldCBzaWduYXR1cmVKU09OID0gbnVsbDtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZS50b0pTT04oKTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04oY29uY2x1c2lvbikge1xuICBjb25zdCBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OKG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbFRvUHJvY2VkdXJlQ2FsbEpTT04ocHJvY2VkdXJlQ2FsbCkge1xuICBsZXQgcHJvY2VkdXJlQ2FsbEpTT04gPSBudWxsO1xuXG4gIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsLnRvSlNPTigpO1xuICB9XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNUb1R5cGVzSlNPTih0eXBlcykge1xuICBjb25zdCB0eXBlc0pTT04gPSB0eXBlcy5tYXAoKHR5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGUudG9KU09OKCk7XG5cbiAgICB0eXBlID0gdHlwZUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1RvVGVybXNKU09OKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zSlNPTiA9IHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICAgIHRlcm0gPSB0ZXJtSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gdGVybTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzVG9SdWxlc0pTT04ocnVsZXMpIHtcbiAgY29uc3QgcnVsZXNKU09OID0gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgY29uc3QgcnVsZUpTT04gPSBydWxlLnRvSlNPTigpO1xuXG4gICAgcnVsZSA9IHJ1bGVKU09OOyAvLy9cblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzVG9MYWJlbHNKU09OKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzLm1hcCgobGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgIHJldHVybiBsYWJlbEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zVG9BeGlvbXNKU09OKGF4aW9tcykge1xuICBjb25zdCBheGlvbXNKU09OID0gYXhpb21zLm1hcCgoYXhpb20pID0+IHtcbiAgICBjb25zdCBheGlvbUpTT04gPSBheGlvbS50b0pTT04oKTtcblxuICAgIGF4aW9tID0gYXhpb21KU09OOyAvLy9cblxuICAgIHJldHVybiBheGlvbTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1RvUHJlbWlzZXNKU09OKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzSlNPTiA9IHByZW1pc2VzLm1hcCgocHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VKU09OID0gcHJlbWlzZS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcmVtaXNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhlb3JlbXMpIHtcbiAgY29uc3QgdGhlb3JlbXNKU09OID0gdGhlb3JlbXMubWFwKCh0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgdGhlb3JlbUpTT04gPSB0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgdGhlb3JlbSA9IHRoZW9yZW1KU09OOyAvLy9cblxuICAgIHJldHVybiB0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzVG9WYXJpYWJsZXNKU09OKHZhcmlhYmxlcykge1xuICBjb25zdCB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzLm1hcCgodmFyaWFibGUpID0+IHtcbiAgICBjb25zdCB2YXJpYWJsZUpTT04gPSB2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHZhcmlhYmxlID0gdmFyaWFibGVKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04oc3VwZXJUeXBlcykge1xuICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlLnRvSlNPTigpO1xuXG4gICAgc3VwZXJUeXBlID0gc3VwZXJUeXBlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTihwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckpTT04gPSBwYXJhbWV0ZXIudG9KU09OKCk7XG5cbiAgICBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyYW1ldGVyO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5SlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OKGNvbmplY3R1cmVzKSB7XG4gIGNvbnN0IGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzLm1hcCgoY29uamVjdHVyZSkgPT4ge1xuICAgIGNvbnN0IGNvbmplY3R1cmVKU09OID0gY29uamVjdHVyZS50b0pTT04oKTtcblxuICAgIGNvbmplY3R1cmUgPSBjb25qZWN0dXJlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04oY29tYmluYXRvcnMpIHtcbiAgY29uc3QgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnMubWFwKChjb21iaW5hdG9yKSA9PiB7XG4gICAgY29uc3QgY29tYmluYXRvckpTT04gPSBjb21iaW5hdG9yLnRvSlNPTigpO1xuXG4gICAgY29tYmluYXRvciA9IGNvbWJpbmF0b3JKU09OOyAvLy9cblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbkpTT04gPSBzdXBwb3NpdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKGNvbnN0cnVjdG9ycykge1xuICBjb25zdCBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzLm1hcCgoY29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckpTT04gPSBjb25zdHJ1Y3Rvci50b0pTT04oKTtcblxuICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OKG1ldGF0aGVvcmVtcykge1xuICBjb25zdCBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zLm1hcCgobWV0YXRoZW9yZW0pID0+IHtcbiAgICBjb25zdCBtZXRhdGhlb3JlbUpTT04gPSBtZXRhdGhlb3JlbS50b0pTT04oKTtcblxuICAgIG1ldGF0aGVvcmVtID0gbWV0YXRoZW9yZW1KU09OOyAvLy9cblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucy5tYXBTdWJzdGl0dXRpb24oKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXMubWFwKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlSlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXNKU09OO1xufVxuIl0sIm5hbWVzIjpbImF4aW9tc0Zyb21KU09OIiwiYXhpb21zVG9BeGlvbXNKU09OIiwiY29tYmluYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJjb25jbHVzaW9uRnJvbUpTT04iLCJjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiIsImNvbmplY3R1cmVzRnJvbUpTT04iLCJjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OIiwiY29uc3RydWN0b3JzRnJvbUpTT04iLCJjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04iLCJkZWR1Y3Rpb25Gcm9tSlNPTiIsImRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTiIsImxhYmVsRnJvbUpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwibGFiZWxzRnJvbUpTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJsZW1tYXNGcm9tTm90aGluZyIsIm1ldGFMZW1tYXNGcm9tTm90aGluZyIsIm1ldGFUeXBlRnJvbUpTT04iLCJtZXRhVHlwZVRvTWV0YVR5cGVKU09OIiwibWV0YXRoZW9yZW1zRnJvbUpTT04iLCJtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04iLCJtZXRhdmFyaWFibGVGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwicGFyYW1ldGVyc0Zyb21KU09OIiwicGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04iLCJwcmVtaXNlc0Zyb21KU09OIiwicHJlbWlzZXNUb1ByZW1pc2VzSlNPTiIsInByb2NlZHVyZUNhbGxGcm9tSlNPTiIsInByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJyZWZlcmVuY2VGcm9tSlNPTiIsInJ1bGVzRnJvbUpTT04iLCJydWxlc1RvUnVsZXNKU09OIiwic2lnbmF0dXJlRnJvbUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJzdGF0ZW1lbnRGcm9tSlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGVybXNGcm9tSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwidGhlb3JlbXNUb1RoZW9yZW1zSlNPTiIsInR5cGVGcm9tSlNPTiIsInR5cGVUb1R5cGVKU09OIiwidHlwZXNGcm9tSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJ2YXJpYWJsZXNGcm9tSlNPTiIsInZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTiIsImpzb24iLCJjb250ZXh0IiwidGVybSIsInRlcm1KU09OIiwiVGVybSIsImRvbSIsImZyb21KU09OIiwidHlwZSIsIm5hbWUiLCJ0eXBlTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsIm1ldGFUeXBlIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJzdGF0ZW1lbnQiLCJTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRKU09OIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlSlNPTiIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwiY29uY2x1c2lvbiIsIkNvbmNsdXNpb24iLCJjb25jbHVzaW9uSlNPTiIsIm1ldGF2YXJpYWJsZSIsIk1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUpTT04iLCJwcm9jZWR1cmVDYWxsIiwiUHJvY2VkdXJlQ2FsbCIsInByb2NlZHVyZUNhbGxKU09OIiwidHlwZXMiLCJ0eXBlc0pTT04iLCJUeXBlIiwiZm9yRWFjaCIsInR5cGVKU09OIiwicHVzaCIsInRlcm1zIiwidGVybXNKU09OIiwibWFwIiwicnVsZXMiLCJSdWxlIiwicnVsZXNKU09OIiwicnVsZUpTT04iLCJydWxlIiwibGFiZWwiLCJMYWJlbCIsImxhYmVsSlNPTiIsImxhYmVscyIsImxhYmVsc0pTT04iLCJheGlvbXMiLCJBeGlvbSIsImF4aW9tc0pTT04iLCJheGlvbUpTT04iLCJheGlvbSIsInByZW1pc2VzIiwiUHJlbWlzZSIsInByZW1pc2VzSlNPTiIsInByZW1pc2VKU09OIiwicHJlbWlzZSIsInRoZW9yZW1zIiwiVGhlb3JlbSIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1KU09OIiwidGhlb3JlbSIsInZhcmlhYmxlcyIsIlZhcmlhYmxlIiwidmFyaWFibGVzSlNPTiIsInZhcmlhYmxlSlNPTiIsInZhcmlhYmxlIiwicHJvcGVydGllcyIsIlByb3BlcnR5IiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eUpTT04iLCJwcm9wZXJ0eSIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZUpTT04iLCJzdXBlclR5cGVOYW1lIiwic3VwZXJUeXBlIiwicGFyYW1ldGVycyIsIlBhcmFtZXRlciIsInBhcmFtZXRlcnNKU09OIiwicGFyYW1ldGVySlNPTiIsInBhcmFtZXRlciIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiQ29tYmluYXRvciIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JKU09OIiwiY29tYmluYXRvciIsImNvbnN0cnVjdG9ycyIsIkNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3JzSlNPTiIsImNvbnN0cnVjdG9ySlNPTiIsImNvbnN0cnVjdG9yIiwibWV0YXRoZW9yZW1zIiwiTWV0YXRoZW9yZW0iLCJtZXRhdGhlb3JlbXNKU09OIiwibWV0YXRoZW9yZW1KU09OIiwibWV0YXRoZW9yZW0iLCJzdXBwb3NpdGlvbnMiLCJTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uc0pTT04iLCJzdXBwb3NpdGlvbkpTT04iLCJzdXBwb3NpdGlvbiIsInN1YnN0aXR1dGlvbnMiLCJTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25zSlNPTiIsIlN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbkpTT04iLCJzdWJzdGl0dXRpb24iLCJtZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlc0pTT04iLCJsZW1tYXMiLCJtZXRhTGVtbWFzIiwidG9KU09OIiwibWV0YVR5cGVKU09OIiwibWFwU3Vic3RpdHV0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF1TmdCQTtlQUFBQTs7UUFxV0FDO2VBQUFBOztRQXRPQUM7ZUFBQUE7O1FBb1VBQztlQUFBQTs7UUF0akJBQztlQUFBQTs7UUFvWkFDO2VBQUFBOztRQWxMQUM7ZUFBQUE7O1FBd1VBQztlQUFBQTs7UUF4U0FDO2VBQUFBOztRQTBVQUM7ZUFBQUE7O1FBeG1CQUM7ZUFBQUE7O1FBZ2FBQztlQUFBQTs7UUE5U0FDO2VBQUFBOztRQXVSQUM7ZUFBQUE7O1FBMVFBQztlQUFBQTs7UUEyV0FDO2VBQUFBOztRQTNIQUM7ZUFBQUE7O1FBTUFDO2VBQUFBOztRQTlaQUM7ZUFBQUE7O1FBd2JBQztlQUFBQTs7UUFqR0FDO2VBQUFBOztRQXNVQUM7ZUFBQUE7O1FBM2tCQUM7ZUFBQUE7O1FBNllBQztlQUFBQTs7UUF2RkFDO2VBQUFBOztRQTJTQUM7ZUFBQUE7O1FBNVpBQztlQUFBQTs7UUFnVUFDO2VBQUFBOztRQS9ZQUM7ZUFBQUE7O1FBaVdBQztlQUFBQTs7UUExY0FDO2VBQUFBOztRQXNZQUM7ZUFBQUE7O1FBN09BQztlQUFBQTs7UUEyV0FDO2VBQUFBOztRQXZrQkFDO2VBQUFBOztRQStHQUM7ZUFBQUE7O1FBNFhBQztlQUFBQTs7UUFqZEFDO2VBQUFBOztRQXlaQUM7ZUFBQUE7O1FBbGNBQztlQUFBQTs7UUFrYkFDO2VBQUFBOztRQXhFQUM7ZUFBQUE7O1FBa1RBQztlQUFBQTs7UUFqYUFDO2VBQUFBOztRQW1VQUM7ZUFB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
|
|
@@ -8,35 +8,35 @@ Object.defineProperty(exports, "subproofStringFromSubproofNode", {
|
|
|
8
8
|
return subproofStringFromSubproofNode;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
function subproofStringFromSubproofNode(subproofNode,
|
|
12
|
-
var suppositionStatementsOrNonsenseString = suppositionStatementOrNonsenseStringFromSubproofNode(subproofNode,
|
|
11
|
+
function subproofStringFromSubproofNode(subproofNode, context) {
|
|
12
|
+
var suppositionStatementsOrNonsenseString = suppositionStatementOrNonsenseStringFromSubproofNode(subproofNode, context), lastStatementOrNonsenseString = lastStatementOrNonsenseStringFromSubproofNode(subproofNode, context), subproofString = "[".concat(suppositionStatementsOrNonsenseString, "] ... ").concat(lastStatementOrNonsenseString);
|
|
13
13
|
return subproofString;
|
|
14
14
|
}
|
|
15
|
-
function suppositionStatementOrNonsenseStringFromSubproofNode(subproofNode,
|
|
15
|
+
function suppositionStatementOrNonsenseStringFromSubproofNode(subproofNode, context) {
|
|
16
16
|
var suppositionNodes = subproofNode.getSuppositionNodes(), suppositionStatementsOrNonsenseString = suppositionNodes.reduce(function(suppositionStatementsOrNonsenseString, suppositionNode) {
|
|
17
|
-
var suppositionOrStepNode = suppositionNode, statementOrNonsenseString = statementOrNonsenseStringFromSuppositionOrStepNode(suppositionOrStepNode,
|
|
17
|
+
var suppositionOrStepNode = suppositionNode, statementOrNonsenseString = statementOrNonsenseStringFromSuppositionOrStepNode(suppositionOrStepNode, context), suppositionStatementOrNonsenseString = statementOrNonsenseString; ///
|
|
18
18
|
suppositionStatementsOrNonsenseString = suppositionStatementsOrNonsenseString !== null ? "".concat(suppositionStatementsOrNonsenseString, ", ").concat(suppositionStatementOrNonsenseString) : suppositionStatementOrNonsenseString; ///
|
|
19
19
|
return suppositionStatementsOrNonsenseString;
|
|
20
20
|
}, null);
|
|
21
21
|
return suppositionStatementsOrNonsenseString;
|
|
22
22
|
}
|
|
23
|
-
function lastStatementOrNonsenseStringFromSubproofNode(subproofNode,
|
|
24
|
-
var lastStepNode = subproofNode.getLastStepNode(), suppositionOrStepNode = lastStepNode, statementOrNonsenseString = statementOrNonsenseStringFromSuppositionOrStepNode(suppositionOrStepNode,
|
|
23
|
+
function lastStatementOrNonsenseStringFromSubproofNode(subproofNode, context) {
|
|
24
|
+
var lastStepNode = subproofNode.getLastStepNode(), suppositionOrStepNode = lastStepNode, statementOrNonsenseString = statementOrNonsenseStringFromSuppositionOrStepNode(suppositionOrStepNode, context), lastStatementOrNonsenseString = statementOrNonsenseString; ///
|
|
25
25
|
return lastStatementOrNonsenseString;
|
|
26
26
|
}
|
|
27
|
-
function statementOrNonsenseStringFromSuppositionOrStepNode(suppositionOrStepNode,
|
|
27
|
+
function statementOrNonsenseStringFromSuppositionOrStepNode(suppositionOrStepNode, context) {
|
|
28
28
|
var statementOrNonsenseString;
|
|
29
29
|
var nonsenseNode = suppositionOrStepNode.getNonsenseNode(), statementNode = suppositionOrStepNode.getStatementNode();
|
|
30
30
|
if (false) {
|
|
31
31
|
///
|
|
32
32
|
} else if (nonsenseNode !== null) {
|
|
33
|
-
var nonsenseString =
|
|
33
|
+
var nonsenseString = context.nodeAsString(nonsenseNode);
|
|
34
34
|
statementOrNonsenseString = nonsenseString; ///
|
|
35
35
|
} else if (statementNode !== null) {
|
|
36
|
-
var statementString =
|
|
36
|
+
var statementString = context.nodeAsString(statementNode);
|
|
37
37
|
statementOrNonsenseString = statementString; ///
|
|
38
38
|
}
|
|
39
39
|
return statementOrNonsenseString;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3VicHJvb2YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJwcm9vZlN0cmluZ0Zyb21TdWJwcm9vZk5vZGUoc3VicHJvb2ZOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uU3RhdGVtZW50c09yTm9uc2Vuc2VTdHJpbmcgPSBzdXBwb3NpdGlvblN0YXRlbWVudE9yTm9uc2Vuc2VTdHJpbmdGcm9tU3VicHJvb2ZOb2RlKHN1YnByb29mTm9kZSwgY29udGV4dCksXG4gICAgICAgIGxhc3RTdGF0ZW1lbnRPck5vbnNlbnNlU3RyaW5nID0gbGFzdFN0YXRlbWVudE9yTm9uc2Vuc2VTdHJpbmdGcm9tU3VicHJvb2ZOb2RlKHN1YnByb29mTm9kZSwgY29udGV4dCksXG4gICAgICAgIHN1YnByb29mU3RyaW5nID0gYFske3N1cHBvc2l0aW9uU3RhdGVtZW50c09yTm9uc2Vuc2VTdHJpbmd9XSAuLi4gJHtsYXN0U3RhdGVtZW50T3JOb25zZW5zZVN0cmluZ31gO1xuXG4gIHJldHVybiBzdWJwcm9vZlN0cmluZztcbn1cblxuZnVuY3Rpb24gc3VwcG9zaXRpb25TdGF0ZW1lbnRPck5vbnNlbnNlU3RyaW5nRnJvbVN1YnByb29mTm9kZShzdWJwcm9vZk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25Ob2RlcyA9IHN1YnByb29mTm9kZS5nZXRTdXBwb3NpdGlvbk5vZGVzKCksXG4gICAgICAgIHN1cHBvc2l0aW9uU3RhdGVtZW50c09yTm9uc2Vuc2VTdHJpbmcgPSBzdXBwb3NpdGlvbk5vZGVzLnJlZHVjZSgoc3VwcG9zaXRpb25TdGF0ZW1lbnRzT3JOb25zZW5zZVN0cmluZywgc3VwcG9zaXRpb25Ob2RlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25PclN0ZXBOb2RlID0gc3VwcG9zaXRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgc3RhdGVtZW50T3JOb25zZW5zZVN0cmluZyA9IHN0YXRlbWVudE9yTm9uc2Vuc2VTdHJpbmdGcm9tU3VwcG9zaXRpb25PclN0ZXBOb2RlKHN1cHBvc2l0aW9uT3JTdGVwTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgICAgc3VwcG9zaXRpb25TdGF0ZW1lbnRPck5vbnNlbnNlU3RyaW5nID0gc3RhdGVtZW50T3JOb25zZW5zZVN0cmluZzsgLy8vXG5cbiAgICAgICAgICBzdXBwb3NpdGlvblN0YXRlbWVudHNPck5vbnNlbnNlU3RyaW5nID0gKHN1cHBvc2l0aW9uU3RhdGVtZW50c09yTm9uc2Vuc2VTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzdXBwb3NpdGlvblN0YXRlbWVudHNPck5vbnNlbnNlU3RyaW5nfSwgJHtzdXBwb3NpdGlvblN0YXRlbWVudE9yTm9uc2Vuc2VTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3NpdGlvblN0YXRlbWVudE9yTm9uc2Vuc2VTdHJpbmc7IC8vL1xuXG4gICAgICAgICAgcmV0dXJuIHN1cHBvc2l0aW9uU3RhdGVtZW50c09yTm9uc2Vuc2VTdHJpbmc7XG4gICAgICAgIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvblN0YXRlbWVudHNPck5vbnNlbnNlU3RyaW5nO1xufVxuXG5mdW5jdGlvbiBsYXN0U3RhdGVtZW50T3JOb25zZW5zZVN0cmluZ0Zyb21TdWJwcm9vZk5vZGUoc3VicHJvb2ZOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxhc3RTdGVwTm9kZSA9IHN1YnByb29mTm9kZS5nZXRMYXN0U3RlcE5vZGUoKSxcbiAgICAgICAgc3VwcG9zaXRpb25PclN0ZXBOb2RlID0gbGFzdFN0ZXBOb2RlLCAvLy9cbiAgICAgICAgc3RhdGVtZW50T3JOb25zZW5zZVN0cmluZyA9IHN0YXRlbWVudE9yTm9uc2Vuc2VTdHJpbmdGcm9tU3VwcG9zaXRpb25PclN0ZXBOb2RlKHN1cHBvc2l0aW9uT3JTdGVwTm9kZSwgY29udGV4dCksXG4gICAgICAgIGxhc3RTdGF0ZW1lbnRPck5vbnNlbnNlU3RyaW5nID0gc3RhdGVtZW50T3JOb25zZW5zZVN0cmluZzsgLy8vXG5cbiAgcmV0dXJuIGxhc3RTdGF0ZW1lbnRPck5vbnNlbnNlU3RyaW5nO1xufVxuXG5mdW5jdGlvbiBzdGF0ZW1lbnRPck5vbnNlbnNlU3RyaW5nRnJvbVN1cHBvc2l0aW9uT3JTdGVwTm9kZShzdXBwb3NpdGlvbk9yU3RlcE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudE9yTm9uc2Vuc2VTdHJpbmc7XG5cbiAgY29uc3Qgbm9uc2Vuc2VOb2RlID0gc3VwcG9zaXRpb25PclN0ZXBOb2RlLmdldE5vbnNlbnNlTm9kZSgpLFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3VwcG9zaXRpb25PclN0ZXBOb2RlLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICAvLy9cbiAgfSBlbHNlIGlmIChub25zZW5zZU5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBub25zZW5zZVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vbnNlbnNlTm9kZSk7XG5cbiAgICBzdGF0ZW1lbnRPck5vbnNlbnNlU3RyaW5nID0gbm9uc2Vuc2VTdHJpbmc7IC8vL1xuICB9IGVsc2UgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIHN0YXRlbWVudE9yTm9uc2Vuc2VTdHJpbmcgPSBzdGF0ZW1lbnRTdHJpbmc7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRPck5vbnNlbnNlU3RyaW5nO1xufSJdLCJuYW1lcyI6WyJzdWJwcm9vZlN0cmluZ0Zyb21TdWJwcm9vZk5vZGUiLCJzdWJwcm9vZk5vZGUiLCJjb250ZXh0Iiwic3VwcG9zaXRpb25TdGF0ZW1lbnRzT3JOb25zZW5zZVN0cmluZyIsInN1cHBvc2l0aW9uU3RhdGVtZW50T3JOb25zZW5zZVN0cmluZ0Zyb21TdWJwcm9vZk5vZGUiLCJsYXN0U3RhdGVtZW50T3JOb25zZW5zZVN0cmluZyIsImxhc3RTdGF0ZW1lbnRPck5vbnNlbnNlU3RyaW5nRnJvbVN1YnByb29mTm9kZSIsInN1YnByb29mU3RyaW5nIiwic3VwcG9zaXRpb25Ob2RlcyIsImdldFN1cHBvc2l0aW9uTm9kZXMiLCJyZWR1Y2UiLCJzdXBwb3NpdGlvbk5vZGUiLCJzdXBwb3NpdGlvbk9yU3RlcE5vZGUiLCJzdGF0ZW1lbnRPck5vbnNlbnNlU3RyaW5nIiwic3RhdGVtZW50T3JOb25zZW5zZVN0cmluZ0Zyb21TdXBwb3NpdGlvbk9yU3RlcE5vZGUiLCJzdXBwb3NpdGlvblN0YXRlbWVudE9yTm9uc2Vuc2VTdHJpbmciLCJsYXN0U3RlcE5vZGUiLCJnZXRMYXN0U3RlcE5vZGUiLCJub25zZW5zZU5vZGUiLCJnZXROb25zZW5zZU5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm5vbnNlbnNlU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwic3RhdGVtZW50U3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFFZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLCtCQUErQkMsWUFBWSxFQUFFQyxPQUFPO0lBQ2xFLElBQU1DLHdDQUF3Q0MscURBQXFESCxjQUFjQyxVQUMzR0csZ0NBQWdDQyw4Q0FBOENMLGNBQWNDLFVBQzVGSyxpQkFBaUIsQUFBQyxJQUFpREYsT0FBOUNGLHVDQUFzQyxVQUFzQyxPQUE5QkU7SUFFekUsT0FBT0U7QUFDVDtBQUVBLFNBQVNILHFEQUFxREgsWUFBWSxFQUFFQyxPQUFPO0lBQ2pGLElBQU1NLG1CQUFtQlAsYUFBYVEsbUJBQW1CLElBQ25ETix3Q0FBd0NLLGlCQUFpQkUsTUFBTSxDQUFDLFNBQUNQLHVDQUF1Q1E7UUFDdEcsSUFBTUMsd0JBQXdCRCxpQkFDeEJFLDRCQUE0QkMsbURBQW1ERix1QkFBdUJWLFVBQ3RHYSx1Q0FBdUNGLDJCQUEyQixHQUFHO1FBRTNFVix3Q0FBd0MsQUFBQ0EsMENBQTBDLE9BQ3pDLEFBQUMsR0FBNENZLE9BQTFDWix1Q0FBc0MsTUFBeUMsT0FBckNZLHdDQUMzQ0Esc0NBQXNDLEdBQUc7UUFFckYsT0FBT1o7SUFDVCxHQUFHO0lBRVQsT0FBT0E7QUFDVDtBQUVBLFNBQVNHLDhDQUE4Q0wsWUFBWSxFQUFFQyxPQUFPO0lBQzFFLElBQU1jLGVBQWVmLGFBQWFnQixlQUFlLElBQzNDTCx3QkFBd0JJLGNBQ3hCSCw0QkFBNEJDLG1EQUFtREYsdUJBQXVCVixVQUN0R0csZ0NBQWdDUSwyQkFBMkIsR0FBRztJQUVwRSxPQUFPUjtBQUNUO0FBRUEsU0FBU1MsbURBQW1ERixxQkFBcUIsRUFBRVYsT0FBTztJQUN4RixJQUFJVztJQUVKLElBQU1LLGVBQWVOLHNCQUFzQk8sZUFBZSxJQUNwREMsZ0JBQWdCUixzQkFBc0JTLGdCQUFnQjtJQUU1RCxJQUFJLE9BQU87SUFDVCxHQUFHO0lBQ0wsT0FBTyxJQUFJSCxpQkFBaUIsTUFBTTtRQUNoQyxJQUFNSSxpQkFBaUJwQixRQUFRcUIsWUFBWSxDQUFDTDtRQUU1Q0wsNEJBQTRCUyxnQkFBZ0IsR0FBRztJQUNqRCxPQUFPLElBQUlGLGtCQUFrQixNQUFNO1FBQ2pDLElBQU1JLGtCQUFrQnRCLFFBQVFxQixZQUFZLENBQUNIO1FBRTdDUCw0QkFBNEJXLGlCQUFrQixHQUFHO0lBQ25EO0lBRUEsT0FBT1g7QUFDVCJ9
|