occam-furtle 3.0.307 → 3.0.310
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/element/assignment/array.js +7 -7
- package/lib/element/assignment/object.js +2 -2
- package/lib/element/primitive.js +20 -1
- package/lib/element/reduce.js +2 -2
- package/lib/element/value.js +55 -2
- package/lib/node/binding/named.js +2 -2
- package/lib/utilities/element.js +4 -3
- package/lib/utilities/primitive.js +10 -11
- package/lib/utilities/string.js +1 -13
- package/lib/utilities/value.js +11 -24
- package/lib/utilities/values.js +4 -4
- package/package.json +1 -1
- package/src/element/assignment/array.js +11 -12
- package/src/element/assignment/object.js +1 -1
- package/src/element/primitive.js +29 -0
- package/src/element/reduce.js +1 -1
- package/src/element/value.js +25 -0
- package/src/node/binding/named.js +1 -1
- package/src/utilities/element.js +4 -4
- package/src/utilities/primitive.js +18 -18
- package/src/utilities/string.js +0 -14
- package/src/utilities/value.js +21 -35
- package/src/utilities/values.js +3 -3
package/lib/utilities/element.js
CHANGED
|
@@ -429,7 +429,7 @@ function termFromTermNode(termNode, context) {
|
|
|
429
429
|
return term;
|
|
430
430
|
}
|
|
431
431
|
function typeFromTypeNode(typeNode, context) {
|
|
432
|
-
const { Type } = _elements.default, node = typeNode,
|
|
432
|
+
const { Type } = _elements.default, node = typeNode, string = context.nodeAsString(node), name = nameFromTypeNode(typeNode, context), argumentType = argumentTypeFromTypeNode(typeNode, context), breakPoint = null;
|
|
433
433
|
context = null;
|
|
434
434
|
const type = new Type(context, string, node, breakPoint, name, argumentType);
|
|
435
435
|
return type;
|
|
@@ -815,7 +815,8 @@ function argumentTypeFromTypeNode(typeNode, context) {
|
|
|
815
815
|
let argumentType = null;
|
|
816
816
|
const argumentTypeName = typeNode.getArgumentTypeName();
|
|
817
817
|
if (argumentTypeName !== null) {
|
|
818
|
-
|
|
818
|
+
const { Type } = _elements.default;
|
|
819
|
+
argumentType = Type.fromTypeName(argumentTypeName, context);
|
|
819
820
|
}
|
|
820
821
|
return argumentType;
|
|
821
822
|
}
|
|
@@ -1109,4 +1110,4 @@ function variableAssignmentsArrayFromTypeAndVariableAssignmentsNode(type, variab
|
|
|
1109
1110
|
return variableAssignmentsArray;
|
|
1110
1111
|
}
|
|
1111
1112
|
|
|
1112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZWxlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwib2NjYW0tcXVlcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBCT09MRUFOX1RZUEVfTkFNRSB9IGZyb20gXCIuLi90eXBlTmFtZXNcIjtcbmltcG9ydCB7IHRlcm5hcnlTdHJpbmdGcm9tVGVybSxcbiAgICAgICAgIHZhcmlhYmxlU3RyaW5nRnJvbU5hbWUsXG4gICAgICAgICB0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMsXG4gICAgICAgICB2YWx1ZVN0cmluZ0Zyb21Qcm9wZXJ0aWVzLFxuICAgICAgICAgZXhwcmVzc2lvblN0cmluZ0Zyb21Qcm9wZXJ0aWVzLFxuICAgICAgICAgdHlwZVN0cmluZ0Zyb21OYW1lQW5kQXJndW1lbnRUeXBlLFxuICAgICAgICAgcHJvY2VkdXJlRGVjbGFyYXRpb25TdHJpbmdGcm9tUHJvY2VkdXJlLFxuICAgICAgICAgcmV0dXJuQmxvY2tTdHJpbmdGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGUsXG4gICAgICAgICBzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlLFxuICAgICAgICAgZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUsXG4gICAgICAgICBwcm9jZWR1cmVTdHJpbmdGcm9tVHlwZUxhYmVsUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrLFxuICAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2ssXG4gICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSxcbiAgICAgICAgIHJlZHVjZVN0cmluZ0Zyb21WYXJpYWJsZUluaXRpYWxFeHByZXNzaW9uQW5kQW5vbnltb3VzUHJvY2VkdXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0ZXBGcm9tU3RlcE5vZGUoc3RlcE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBTdGVwIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHN0ZXBOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgYXJyYXlBc3NpZ25tZW50ID0gYXJyYXlBc3NpZ25tZW50RnJvbVN0ZXBOb2RlKHN0ZXBOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgb2JqZWN0QXNzaWdtZW50ID0gb2JqZWN0QXNzaWdubWVudEZyb21TdGVwTm9kZShzdGVwTm9kZSwgY29udGV4dCksXG4gICAgICAgIHZhcmlhYmxlQXNzaWdtZW50cyA9IHZhcmlhYmxlQXNzaWdubWVudHNGcm9tU3RlcE5vZGUoc3RlcE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHN0ZXAgPSBuZXcgU3RlcChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5QXNzaWdubWVudCwgb2JqZWN0QXNzaWdtZW50LCB2YXJpYWJsZUFzc2lnbWVudHMpO1xuXG4gIHJldHVybiBzdGVwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZUZyb21Tb21lTm9kZShzb21lTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFNvbWUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gc29tZU5vZGUsICAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21Tb21lTm9kZShzb21lTm9kZSwgY29udGV4dCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZSA9IGFub255bW91c1Byb2NlZHVyZUZyb21Tb21lTm9kZShzb21lTm9kZSwgY29udGV4dCksXG4gICAgICAgIHNvbWVTdHJpbmcgPSBzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlKHZhcmlhYmxlLCBhbm9ueW1vdXNQcm9jZWR1cmUpLFxuICAgICAgICBzdHJpbmcgPSBzb21lU3RyaW5nLCAgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHNvbWUgPSBuZXcgU29tZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBhbm9ueW1vdXNQcm9jZWR1cmUpO1xuXG4gIHJldHVybiBzb21lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzLFxuICAgIG5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgbmVnYXRlZFRlcm0gPSBuZWdhdGVkVGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgbG9naWNhbFRlcm0gPSBsb2dpY2FsVGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgYnJhY2tldGVkVGVybSA9IGJyYWNrZXRlZFRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIGNvbXBhcmlzb25UZXJtID0gY29tcGFyaXNvblRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIHByb3BlcnRpZXMgPSBbXG4gICAgICB2YXJpYWJsZSxcbiAgICAgIHByaW1pdGl2ZSxcbiAgICAgIG5lZ2F0ZWRUZXJtLFxuICAgICAgbG9naWNhbFRlcm0sXG4gICAgICBicmFja2V0ZWRUZXJtLFxuICAgICAgY29tcGFyaXNvblRlcm1cbiAgICBdLFxuICAgIHRlcm1TdHJpbmcgPSB0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcywgY29udGV4dCksXG4gICAgc3RyaW5nID0gdGVybVN0cmluZywgIC8vL1xuICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHRlcm0gPSBuZXcgVGVybShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBwcmltaXRpdmUsIG5lZ2F0ZWRUZXJtLCBsb2dpY2FsVGVybSwgYnJhY2tldGVkVGVybSwgY29tcGFyaXNvblRlcm0pO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gdHlwZU5vZGUsICAvLy9cbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBhcmd1bWVudFR5cGUgPSBhcmd1bWVudFR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICB0eXBlU3RyaW5nID0gdHlwZVN0cmluZ0Zyb21OYW1lQW5kQXJndW1lbnRUeXBlKG5hbWUsIGFyZ3VtZW50VHlwZSksXG4gICAgICAgIHN0cmluZyA9IHR5cGVTdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgYXJndW1lbnRUeXBlKTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYWx1ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB2YWx1ZU5vZGUsICAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgICAgIHZhcmlhYmxlLFxuICAgICAgICAgIHByaW1pdGl2ZVxuICAgICAgICBdLFxuICAgICAgICB2YWx1ZVN0cmluZyA9IHZhbHVlU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcywgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHZhbHVlU3RyaW5nLCAgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHZhbHVlID0gbmV3IFZhbHVlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHByaW1pdGl2ZSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNGcm9tVGVybXNOb2RlKHRlcm1zTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFRlcm1zIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHRlcm1zTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICB0ZXJtTm9kZXMgPSB0ZXJtc05vZGUuZ2V0VGVybU5vZGVzKCksXG4gICAgICAgIHRlcm1zQXJyYXkgPSB0ZXJtc0FycmF5RnJvbVRlcm1Ob2Rlcyh0ZXJtTm9kZXMsIGNvbnRleHQpLFxuICAgICAgICBhcnJheSA9IHRlcm1zQXJyYXksIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB0ZXJtcyA9IG5ldyBUZXJtcyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvckZyb21FcnJvck5vZGUoZXJyb3JOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgRXJyb3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gZXJyb3JOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgcmV0dXJuIGVycm9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnlGcm9tRXZlcnlOb2RlKGV2ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEV2ZXJ5IH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGV2ZXJ5Tm9kZSwgLy8vXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tRXZlcnlOb2RlKGV2ZXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZSA9IGFub255bW91c1Byb2NlZHVyZUZyb21FdmVyeU5vZGUoZXZlcnlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgZXZlcnlTdHJpbmcgPSBldmVyeVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKSxcbiAgICAgICAgc3RyaW5nID0gZXZlcnlTdHJpbmcsIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBldmVyeSA9IG5ldyBFdmVyeShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBhbm9ueW1vdXNQcm9jZWR1cmUpO1xuXG4gIHJldHVybiBldmVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBsYWJlbE5vZGUsXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tTGFiZWxOb2RlKGxhYmVsTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgbGFiZWwgPSBuZXcgTGFiZWwoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lKTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZXNGcm9tVmFsdWVzTm9kZSh2YWx1ZXNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVmFsdWVzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHZhbHVlc05vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgdmFsdWVOb2RlcyA9IHZhbHVlc05vZGUuZ2V0VmFsdWVOb2RlcygpLFxuICAgICAgICB2YWx1ZXNBcnJheSA9IHZhbHVlc0FycmF5RnJvbVZhbHVlTm9kZXModmFsdWVOb2RlcywgY29udGV4dCksXG4gICAgICAgIGFycmF5ID0gdmFsdWVzQXJyYXksIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB2YWx1ZXMgPSBuZXcgVmFsdWVzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgYXJyYXkpO1xuXG4gIHJldHVybiB2YWx1ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUmVkdWNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHJlZHVjZU5vZGUsICAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBpbml0aWFsVmFsdWUgPSBpbml0aWFsVmFsdWVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlID0gYW5vbnltb3VzUHJvY2VkdXJlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJlZHVjZVN0cmluZyA9IHJlZHVjZVN0cmluZ0Zyb21WYXJpYWJsZUluaXRpYWxFeHByZXNzaW9uQW5kQW5vbnltb3VzUHJvY2VkdXJlKHZhcmlhYmxlLCBpbml0aWFsVmFsdWUsIGFub255bW91c1Byb2NlZHVyZSksXG4gICAgICAgIHN0cmluZyA9IHJlZHVjZVN0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCByZWR1Y2UgPSBuZXcgUmVkdWNlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIGluaXRpYWxWYWx1ZSwgYW5vbnltb3VzUHJvY2VkdXJlKTtcblxuICByZXR1cm4gcmVkdWNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZ0Zyb21CaW5kaW5nTm9kZShiaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEJpbmRpbmcgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gYmluZGluZ05vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpLFxuICAgICAgICBlbGlkZWQgPSBlbGlkZWRGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGJpbmRpbmcgPSBuZXcgQmluZGluZyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIG5hbWUsIGVsaWRlZCk7XG5cbiAgcmV0dXJuIGJpbmRpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJuYXJ5RnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVGVybmFyeSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB0ZXJuYXJ5Tm9kZSwgLy8vXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgaWZFeHByZXNzaW9uID0gaWZFeHByZXNzaW9uRnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgZWxzZUV4cHJlc3Npb24gPSBlbHNlRXhwcmVzc2lvbkZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm5hcnlTdHJpbmcgPSB0ZXJuYXJ5U3RyaW5nRnJvbVRlcm0odGVybSksXG4gICAgICAgIHN0cmluZyA9IHRlcm5hcnlTdHJpbmcsIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB0ZXJuYXJ5ID0gbmV3IFRlcm5hcnkoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBpZkV4cHJlc3Npb24sIGVsc2VFeHByZXNzaW9uKTtcblxuICByZXR1cm4gdGVybmFyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCksXG4gICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbmFtZSwgZXhwcmVzc2lvbik7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZ3NGcm9tQmluZGluZ3NOb2RlKGJpbmRpbmdzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEJpbmRpbmdzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGJpbmRpbmdzTm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIGJpbmRpbmdzQXJyYXkgPSBiaW5kaW5nc0FycmF5RnJvbUJpbmRpbmdzTm9kZShiaW5kaW5nc05vZGUsIGNvbnRleHQpLFxuICAgICAgICBhcnJheSA9IGJpbmRpbmdzQXJyYXk7IC8vL1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGJpbmRpbmdzID0gbmV3IEJpbmRpbmdzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgYXJyYXkpO1xuXG4gIHJldHVybiBiaW5kaW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBSZWZlcmVuY2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcmVmZXJlbmNlTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCByZWZlcmVuY2UgPSBuZXcgUmVmZXJlbmNlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlckZyb21QYXJhbWV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBQYXJhbWV0ZXIgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcGFyYW1ldGVyTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tUGFyYW5ldGVyTm9kZShwYXJhbWV0ZXJOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tUGFyYW5ldGVyTm9kZShwYXJhbWV0ZXJOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBwYXJhbWV0ZXIgPSBuZXcgUGFyYW1ldGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbmFtZSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVRdWVyeUZyb21Ob2RlUXVlcnlOb2RlKG5vZGVRdWVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBOb2RlUXVlcnkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gbm9kZVF1ZXJ5Tm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21Ob2RlUXVlcnlOb2RlKG5vZGVRdWVyeU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBxdWVyeSA9IHF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUobm9kZVF1ZXJ5Tm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3Qgbm9kZVF1ZXJ5ID0gbmV3IE5vZGVRdWVyeShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBxdWVyeSk7XG5cbiAgcmV0dXJuIG5vZGVRdWVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW1pdGl2ZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBQcmltaXRpdmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcHJpbWl0aXZlTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tUHJpbWl0aXZlTm9kZShwcmltaXRpdmVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFsdWUgPSB2YWx1ZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHByaW1pdGl2ZSA9IG5ldyBQcmltaXRpdmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCB2YWx1ZSk7XG5cbiAgcmV0dXJuIHByaW1pdGl2ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVzUXVlcnlGcm9tTm9kZXNRdWVyeU5vZGUobm9kZXNRdWVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBOb2Rlc1F1ZXJ5IH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IG5vZGVzUXVlcnlOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21Ob2Rlc1F1ZXJ5Tm9kZShub2Rlc1F1ZXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIHF1ZXJ5ID0gcXVlcnlGcm9tTm9kZXNRdWVyeU5vZGUobm9kZXNRdWVyeU5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG5vZGVzUXVlcnkgPSBuZXcgTm9kZXNRdWVyeShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBxdWVyeSk7XG5cbiAgcmV0dXJuIG5vZGVzUXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUGFyYW1ldGVycyB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBwYXJhbWV0ZXJzTm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHBhcmFtZXRlcnNBcnJheSA9IHBhcmFtZXRlcnNBcnJheUZyb21QYXJhbWV0ZXJzTm9kZShwYXJhbWV0ZXJzTm9kZSwgY29udGV4dCksXG4gICAgICAgIGFycmF5ID0gcGFyYW1ldGVyc0FycmF5OyAvLy9cblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhcnJheSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHByZXNzaW9uRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgRXhwcmVzc2lvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBleHByZXNzaW9uTm9kZSwgIC8vL1xuICAgICAgICB0ZXJtID0gdGVybUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHNvbWUgPSBzb21lRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgZXZlcnkgPSBldmVyeUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJlZHVjZSA9IHJlZHVjZUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm5hcnkgPSB0ZXJuYXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZXNRdWVyeSA9IG5vZGVzUXVlcnlGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGxGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgc29tZSxcbiAgICAgICAgICBldmVyeSxcbiAgICAgICAgICByZWR1Y2UsXG4gICAgICAgICAgdGVybmFyeSxcbiAgICAgICAgICBub2RlUXVlcnksXG4gICAgICAgICAgbm9kZXNRdWVyeSxcbiAgICAgICAgICByZXR1cm5CbG9jayxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsXG4gICAgICAgIF0sXG4gICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBleHByZXNzaW9uU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcywgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IGV4cHJlc3Npb25TdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgZXhwcmVzc2lvbiA9IG5ldyBFeHByZXNzaW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgc29tZSwgZXZlcnksIHJlZHVjZSwgdGVybmFyeSwgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5LCByZXR1cm5CbG9jaywgcHJvY2VkdXJlQ2FsbCk7XG5cbiAgcmV0dXJuIGV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5CbG9ja0Zyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUmV0dXJuQmxvY2sgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcmV0dXJuQmxvY2tOb2RlLCAvLy9cbiAgICAgICAgc3RlcHMgPSBzdGVwc0Zyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9uc2Vuc2ljYWwgPSBub25zZW5zaWNhbEZyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgcmV0dXJuU3RhdGVtZW50ID0gcmV0dXJuU3RhdGVtZW50RnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpLFxuICAgICAgICByZXR1cm5CbG9ja1N0cmluZyA9IHJldHVybkJsb2NrU3RyaW5nRnJvbVJldHVyblN0YXRlbWVudE5vZGUocmV0dXJuU3RhdGVtZW50KSxcbiAgICAgICAgc3RyaW5nID0gcmV0dXJuQmxvY2tTdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcmV0dXJuQmxvY2sgPSBuZXcgUmV0dXJuQmxvY2soY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGVwcywgbm9uc2Vuc2ljYWwsIHJldHVyblN0YXRlbWVudCk7XG5cbiAgcmV0dXJuIHJldHVybkJsb2NrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZFRlcm1Gcm9tTmVnYXRlZFRlcm1Ob2RlKG5lZ2F0ZWRUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE5lZ2F0ZWRUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IG5lZ2F0ZWRUZXJtTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdGVybU5vZGUgPSBuZWdhdGVkVGVybU5vZGUuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tTmVnYXRlZFRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgdGVybSA9IHRlcm1Gcm9tTmVnYXRlZFRlcm1Ob2RlKG5lZ2F0ZWRUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5lZ2F0ZWRUZXJtID0gbmV3IE5lZ2F0ZWRUZXJtKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgdGVybSk7XG5cbiAgcmV0dXJuIG5lZ2F0ZWRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9naWNhbFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IExvZ2ljYWxUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGxvZ2ljYWxUZXJtTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGRpc2p1bmN0aW9uID0gZGlzanVuY3Rpb25Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGxlZnRUZXJtID0gbGVmdFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJpZ2h0VGVybSA9IHJpZ2h0VGVybUZyb21Mb2dpY2FsVGVybU5vZGUobG9naWNhbFRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgbG9naWNhbFRlcm0gPSBuZXcgTG9naWNhbFRlcm0oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBkaXNqdW5jdGlvbiwgbGVmdFRlcm0sIHJpZ2h0VGVybSk7XG5cbiAgcmV0dXJuIGxvZ2ljYWxUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZWRCaW5kaW5nRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE5hbWVkQmluZGluZyB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBuYW1lZEJpbmRpbmdOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYWxpYXMgPSBhbGlhc0Zyb21OYW1lZEJpbmRpbmdOb2RlKG5hbWVkQmluZGluZ05vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG5hbWVkQmluZGluZyA9IG5ldyBOYW1lZEJpbmRpbmcoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBuYW1lLCBhbGlhcyk7XG5cbiAgcmV0dXJuIG5hbWVkQmluZGluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVkQmluZGluZ3NGcm9tTmFtZWRCaW5kaW5nc05vZGUobmFtZWRCaW5kaW5nc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBOYW1lZEJpbmRpbmdzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IG5hbWVkQmluZGluZ3NOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBuYW1lZEJpbmRpbmdOb2RlcyA9IG5hbWVkQmluZGluZ3NOb2RlLmdldE5hbWVkQmluZGluZ05vZGVzKCksXG4gICAgICAgIG5hbWVkQmluZGluZ3NBcnJheSA9IG5hbWVkUGFyYW1ldGVyc0FycmF5RnJvbU5hbWVkQmluZGluZ05vZGVzKG5hbWVkQmluZGluZ05vZGVzLCBjb250ZXh0KSxcbiAgICAgICAgYXJyYXkgPSBuYW1lZEJpbmRpbmdzQXJyYXk7IC8vL1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG5hbWVkQmluZGluZ3MgPSBuZXcgTmFtZWRCaW5kaW5ncyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5KTtcblxuICByZXR1cm4gbmFtZWRCaW5kaW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyYWNrZXRlZFRlcm1Gcm9tQnJhY2tldGVkVGVybU5vZGUoYnJhY2tldGVkVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBCcmFja2V0ZWRUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGJyYWNrZXRlZFRlcm1Ob2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbUJyYWNrZXRlZFRlcm1Ob2RlKGJyYWNrZXRlZFRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgYnJhY2tldGVkVGVybSA9IG5ldyBCcmFja2V0ZWRUZXJtKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSk7XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbVByb2NlZHVyZUNhbGxOb2RlKHByb2NlZHVyZUNhbGxOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBwcm9jZWR1cmVDYWxsTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbVByb2NlZHVyZUNhbGxOb2RlKHByb2NlZHVyZUNhbGxOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFsdWVzID0gdmFsdWVzRnJvbVByb2NlZHVyZUNhbGxOb2RlKHByb2NlZHVyZUNhbGxOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBwcm9jZWR1cmVDYWxsID0gbmV3IFByb2NlZHVyZUNhbGwoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCByZWZlcmVuY2UsIHZhbHVlcyk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJpc29uVGVybUZyb21Db21wYXJpc29uVGVybU5vZGUoY29tcGFyaXNvblRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgQ29tcGFyaXNvblRlcm0gfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gY29tcGFyaXNvblRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tQ29tcGFyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGxlZnRUZXJtID0gbGVmdFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJpZ2h0VGVybSA9IHJpZ2h0VGVybUZyb21Db21wenJpc29uVGVybU5vZGUoY29tcGFyaXNvblRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgY29tcGFyaXNvblRlcm0gPSBuZXcgQ29tcGFyaXNvblRlcm0oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuZWdhdGVkLCBsZWZ0VGVybSwgcmlnaHRUZXJtKTtcblxuICByZXR1cm4gY29tcGFyaXNvblRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lZEJpbmRpbmdzRnJvbU9iamVjdEFzc2lnbm1lbnROb2RlKG9iamVjdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWVkQmluZGluZ3NOb2RlID0gb2JqZWN0QXNzaWdubWVudE5vZGUuZ2V0TmFtZWRCaW5kaW5nc05vZGUoKSxcbiAgICAgICAgbmFtZWRCaW5kaW5ncyA9IG5hbWVkQmluZGluZ3NGcm9tTmFtZWRCaW5kaW5nc05vZGUobmFtZWRCaW5kaW5nc05vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBuYW1lZEJpbmRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBQcm9jZWR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCAgLy8vXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBsYWJlbCA9IGxhYmVsRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcmV0dXJuQmxvY2sgPSByZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJvY2VkdXJlU3RyaW5nID0gcHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVMYWJlbFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBsYWJlbCwgcGFyYW1ldGVycywgcmV0dXJuQmxvY2spLFxuICAgICAgICBzdHJpbmcgPSBwcm9jZWR1cmVTdHJpbmcsIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgcHJvY2VkdXJlID0gbmV3IFByb2NlZHVyZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIGxhYmVsLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jayk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5QXNzaWdubWVudEZyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBBcnJheUFzc2lnbm1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gYXJyYXlBc3NpZ25tZW50Tm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBiaW5kaW5ncyA9IGJpbmRpbmdzRnJvbUFycmF5QXNzaWdubWVudE5vZGUoYXJyYXlBc3NpZ25tZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgYXJyYXlBc3NpZ25tZW50ID0gbmV3IEFycmF5QXNzaWdubWVudChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBiaW5kaW5ncyk7XG5cbiAgcmV0dXJuIGFycmF5QXNzaWdubWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldHVyblN0YXRlbWVudEZyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBSZXR1cm5TdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcmV0dXJuU3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFsdWUgPSB2YWx1ZUZyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHJldHVyblN0YXRlbWVudCA9IG5ldyBSZXR1cm5TdGF0ZW1lbnQoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YWx1ZSk7XG5cbiAgcmV0dXJuIHJldHVyblN0YXRlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdEFzc2lnbm1lbnRGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUob2JqZWN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBPYmplY3RBc3NpZ21lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gb2JqZWN0QXNzaWdubWVudE5vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbU9iamVjdEFzc2lnbm1lbnROb2RlKG9iamVjdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZWRCaW5kaW5ncyA9IG5hbWVkQmluZGluZ3NGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUob2JqZWN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG9iamVjdEFzc2lnbm1lbnQgPSBuZXcgT2JqZWN0QXNzaWdtZW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIG5hbWVkQmluZGluZ3MpO1xuXG4gIHJldHVybiBvYmplY3RBc3NpZ25tZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEFub255bW91c1Byb2NlZHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCAgLy8vXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJldHVybkJsb2NrID0gcmV0dXJuQmxvY2tGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmcgPSBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jayksXG4gICAgICAgIHN0cmluZyA9IG5vbnltb3VzUHJvY2VkdXJlU3RyaW5nLCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgYW5vbnltb3VzUHJvY2VkdXJlID0gbmV3IEFub255bW91c1Byb2NlZHVyZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKTtcblxuICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50c0Zyb21WYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSh2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFZhcmlhYmxlQXNzaWdubWVudHMgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gdmFyaWFibGVBc3NpZ25tZW50c05vZGUsIC8vL1xuICAgICAgICB0eXBlID0gdHlwZUZyb21WYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSh2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZSwgY29udGV4dCksXG4gICAgICAgIHZhcmlhYmxlQXNzaWdubWVudHNBcnJheSA9IHZhcmlhYmxlQXNzaWdubWVudHNBcnJheUZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50c05vZGUodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50c05vZGUsIGNvbnRleHQpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSh0eXBlLCB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkpLFxuICAgICAgICBhcnJheSA9IHZhcmlhYmxlQXNzaWdubWVudHNBcnJheSwgLy8vXG4gICAgICAgIHN0cmluZyA9IHZhcmlhYmxlQXNzaWdubWVudFN0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB2YXJpYWJsZUFzc2lnbm1lbnRzID0gbmV3IFZhcmlhYmxlQXNzaWdubWVudHMoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhcnJheSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVEZWNsYXJhdGlvbkZyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUHJvY2VkdXJlRGVjbGFyYXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCAgLy8vXG4gICAgICAgIHByb2NlZHVyZSA9IHByb2NlZHVyZUZyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJvY2VkdXJlRGVjbGFyYXRpb25TdHJpbmcgPSBwcm9jZWR1cmVEZWNsYXJhdGlvblN0cmluZ0Zyb21Qcm9jZWR1cmUocHJvY2VkdXJlKSxcbiAgICAgICAgc3RyaW5nID0gcHJvY2VkdXJlRGVjbGFyYXRpb25TdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcHJvY2VkdXJlRGVjbGFyYXRpb24gPSBuZXcgUHJvY2VkdXJlRGVjbGFyYXRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBwcm9jZWR1cmUpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVEZWNsYXJhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50Tm9kZSh0eXBlLCB2YXJpYWJsZUFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVmFyaWFibGVBc3NpZ25tZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHZhcmlhYmxlQXNzaWdubWVudE5vZGUsICAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50Tm9kZSh0eXBlLCB2YXJpYWJsZUFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25Gcm9tVmFyaWFibGVBc3NpZ25tZW50Tm9kZSh2YXJpYWJsZUFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nID0gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZSh0eXBlLCB2YXJpYWJsZSwgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHZhcmlhYmxlQXNzaWdubWVudFN0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgYXNzaWdubWVudCA9IG5ldyBWYXJpYWJsZUFzc2lnbm1lbnQoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgZXhwcmVzc2lvbik7XG5cbiAgcmV0dXJuIGFzc2lnbm1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21UeXBlQW5kVmFyaWFibGVOb2RlKHR5cGUsIHZhcmlhYmxlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICBuYW1lID0gbmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgdmFsdWUgPSB2YWx1ZUZyb21UeXBlQW5kVmFyaWFibGVOb2RlKHR5cGUsIHZhcmlhYmxlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGVTdHJpbmdGcm9tTmFtZShuYW1lKSxcbiAgICAgICAgc3RyaW5nID0gdmFyaWFibGVTdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbmFtZSwgdmFsdWUpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IHR5cGVOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tTGFiZWxOb2RlKGxhYmVsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lID0gbGFiZWxOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZU5vZGUgPSByZWR1Y2VOb2RlLmdldFZhbHVlTm9kZSgpLFxuICAgICAgICB2YWx1ZSA9IHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tVGVybmFyeU5vZGUodGVybmFyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJuYXJ5Tm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWUgPSBiaW5kaW5nTm9kZS5nZXROYW1lKCk7XG5cbiAgcmV0dXJuIG5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KSB7XG4gIGxldCB0eXBlID0gbnVsbDtcblxuICBjb25zdCB0eXBlTm9kZSA9IGJpbmRpbmdOb2RlLmdldFR5cGVOb2RlKCk7XG5cbiAgaWYgKHR5cGVOb2RlICE9IG51bGwpIHtcbiAgICB0eXBlID0gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbVNvbWVOb2RlKHNvbWVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHNvbWVOb2RlLmdldFZhcmlhYmxlTm9kZSgpLCAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICBsZXQgdmFyaWFibGUgPSBudWxsO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHRlcm1Ob2RlLmdldFZhcmlhYmxlTm9kZSgpO1xuXG4gIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSB7XG4gIGNvbnN0IG5hbWUgPSB2YXJpYWJsZU5vZGUuZ2V0TmFtZSgpO1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGUgPSBudWxsO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbWl0aXZlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBwcmltaXRpdmUgPSBudWxsO1xuXG4gIGNvbnN0IHByaW1pdGl2ZU5vZGUgPSB0ZXJtTm9kZS5nZXRQcmltaXRpdmVOb2RlKCk7XG5cbiAgaWYgKHByaW1pdGl2ZU5vZGUgIT09IG51bGwpIHtcbiAgICBwcmltaXRpdmUgPSBwcmltaXRpdmVGcm9tUHJpbWl0aXZlTm9kZShwcmltaXRpdmVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBwcmltaXRpdmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21FdmVyeU5vZGUoZXZlcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IGV2ZXJ5Tm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbGlkZWRGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZWxpZGVkID0gYmluZGluZ05vZGUuaXNFbGlkZWQoKTtcblxuICByZXR1cm4gZWxpZGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21QYXJhbmV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZU5vZGUgPSBwYXJhbWV0ZXJOb2RlLmdldFR5cGVOb2RlKCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tUGFyYW5ldGVyTm9kZShwYXJhbWV0ZXJOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWUgPSBwYXJhbWV0ZXJOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWUgPSByZWZlcmVuY2VOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tUHJpbWl0aXZlTm9kZShwcmltaXRpdmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVHlwZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHR5cGVOYW1lID0gcHJpbWl0aXZlTm9kZS5nZXRUeXBlTmFtZSgpLFxuICAgICAgICB0eXBlID0gVHlwZS5mcm9tVHlwZU5hbWUodHlwZU5hbWUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCkge1xuICBsZXQgdmFyaWFibGUgPSBudWxsO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhbHVlTm9kZS5nZXRWYXJpYWJsZU5vZGUoKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW1pdGl2ZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBwcmltaXRpdmUgPSBudWxsO1xuXG4gIGNvbnN0IHByaW1pdGl2ZU5vZGUgPSB2YWx1ZU5vZGUuZ2V0UHJpbWl0aXZlTm9kZSgpO1xuXG4gIGlmIChwcmltaXRpdmVOb2RlICE9PSBudWxsKSB7XG4gICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbVByaW1pdGl2ZU5vZGUocHJpbWl0aXZlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJpbWl0aXZlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHJlZHVjZU5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgdGVybSA9IG51bGw7XG5cbiAgY29uc3QgdGVybU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRUZXJtTm9kZSgpO1xuXG4gIGlmICh0ZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgc29tZSA9IG51bGw7XG5cbiAgY29uc3Qgc29tZU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRTb21lTm9kZSgpO1xuXG4gIGlmIChzb21lTm9kZSAhPT0gbnVsbCkge1xuICAgIHNvbWUgPSBzb21lRnJvbVNvbWVOb2RlKHNvbWVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzb21lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlGcm9tTm9kZVF1ZXJ5Tm9kZShub2RlUXVlcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0cmluZyA9IG5vZGVRdWVyeU5vZGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgcXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvblN0cmluZyhleHByZXNzaW9uU3RyaW5nKTtcblxuICByZXR1cm4gcXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFsdWUgPSBwcmltaXRpdmVOb2RlLmdldFZhbHVlKCk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlGcm9tTm9kZXNRdWVyeU5vZGUobm9kZXNRdWVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZXNRdWVyeU5vZGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgcXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvblN0cmluZyhleHByZXNzaW9uU3RyaW5nKTtcblxuICByZXR1cm4gcXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVyeUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgZXZlcnkgPSBudWxsO1xuXG4gIGNvbnN0IGV2ZXJ5Tm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldEV2ZXJ5Tm9kZSgpO1xuXG4gIGlmIChldmVyeU5vZGUgIT09IG51bGwpIHtcbiAgICBldmVyeSA9IGV2ZXJ5RnJvbUV2ZXJ5Tm9kZShldmVyeU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGV2ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZFRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG5lZ2F0ZWRUZXJtID0gbnVsbDtcblxuICBjb25zdCBuZWdhdGVkVGVybU5vZGUgPSB0ZXJtTm9kZS5nZXROZWdhdGVkVGVybU5vZGUoKTtcblxuICBpZiAobmVnYXRlZFRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgbmVnYXRlZFRlcm0gPSBuZWdhdGVkVGVybUZyb21OZWdhdGVkVGVybU5vZGUobmVnYXRlZFRlcm1Ob2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBuZWdhdGVkVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ2ljYWxUZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBsb2dpY2FsVGVybSA9IG51bGw7XG5cbiAgY29uc3QgbG9naWNhbFRlcm1Ob2RlID0gdGVybU5vZGUuZ2V0TG9naWNhbFRlcm1Ob2RlKCk7XG5cbiAgaWYgKGxvZ2ljYWxUZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgIGxvZ2ljYWxUZXJtID0gbG9naWNhbFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbG9naWNhbFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZSA9IEJPT0xFQU5fVFlQRV9OQU1FO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21OZWdhdGVkVGVybU5vZGUobG9naWNhbFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGUgPSBCT09MRUFOX1RZUEVfTkFNRTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tTmVnYXRlZFRlcm1Ob2RlKG5lZ2F0ZWRUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IG5lZ2F0ZWRUZXJtTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmd1bWVudFR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGFyZ3VtZW50VHlwZSA9IG51bGw7XG5cbiAgY29uc3QgYXJndW1lbnRUeXBlTmFtZSA9IHR5cGVOb2RlLmdldEFyZ3VtZW50VHlwZU5hbWUoKTtcblxuICBpZiAoYXJndW1lbnRUeXBlTmFtZSAhPT0gbnVsbCkge1xuICAgIGRlYnVnZ2VyXG4gIH1cblxuICByZXR1cm4gYXJndW1lbnRUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCByZWR1Y2UgPSBudWxsO1xuXG4gIGNvbnN0IHJlZHVjZU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRSZWR1Y2VOb2RlKCk7XG5cbiAgaWYgKHJlZHVjZU5vZGUgIT09IG51bGwpIHtcbiAgICByZWR1Y2UgPSByZWR1Y2VGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiByZWR1Y2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGVwc0Zyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0ZXBOb2RlcyA9IHJldHVybkJsb2NrTm9kZS5nZXRTdGVwTm9kZXMoKSxcbiAgICAgICAgc3RlcHMgPSBzdGVwTm9kZXMubWFwKChzdGVwTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0ZXAgPSBzdGVwRnJvbVN0ZXBOb2RlKHN0ZXBOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBzdGVwO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gc3RlcHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlTm9kZSA9IG5hbWVkQmluZGluZ05vZGUuZ2V0VHlwZU5vZGUoKSxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21OYW1lZEJpbmRpbmdOb2RlKG5hbWVkQmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IG5hbWVkQmluZGluZ05vZGUuZ2V0TmFtZSgpO1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGFsaWFzID0gbmFtZWRCaW5kaW5nTm9kZS5nZXRBbGlhcygpO1xuXG4gIHJldHVybiBhbGlhcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbU5vZGVRdWVyeU5vZGUobm9kZVF1ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSBub2RlUXVlcnlOb2RlLmdldFZhcmlhYmxlTm9kZSgpLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm5hcnlGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm5hcnkgPSBudWxsO1xuXG4gIGNvbnN0IHRlcm5hcnlOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0VGVybmFyeU5vZGUoKTtcblxuICBpZiAodGVybmFyeU5vZGUgIT09IG51bGwpIHtcbiAgICB0ZXJuYXJ5ID0gdGVybmFyeUZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdGVybmFyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyYWNrZXRlZFRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGJyYWNrZXRlZFRlcm0gPSBudWxsO1xuXG4gIGNvbnN0IGJyYWNrZXRlZFRlcm1Ob2RlID0gdGVybU5vZGUuZ2V0QnJhY2tldGVkVGVybU5vZGUoKTtcblxuICBpZiAoYnJhY2tldGVkVGVybU5vZGUgIT09IG51bGwpIHtcbiAgICBicmFja2V0ZWRUZXJtID0gYnJhY2tldGVkVGVybUZyb21CcmFja2V0ZWRUZXJtTm9kZShicmFja2V0ZWRUZXJtTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gYnJhY2tldGVkVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tQnJhY2tldGVkVGVybU5vZGUoYnJhY2tldGVkVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSBicmFja2V0ZWRUZXJtTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmlzb25UZXJtRnJvbVRlcm1Ob2RlKHRlcm1OT2RlLCBjb250ZXh0KSB7XG4gIGxldCBjb21wYXJpc29uVGVybSA9IG51bGw7XG5cbiAgY29uc3QgY29tcGFyaXNvblRlcm1Ob2RlID0gdGVybU5PZGUuZ2V0Q29tcGFyaXNvblRlcm1Ob2RlKCk7XG5cbiAgaWYgKGNvbXBhcmlzb25UZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbXBhcmlzb25UZXJtID0gY29tcGFyaXNvblRlcm1Gcm9tQ29tcGFyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gY29tcGFyaXNvblRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsVmFsdWVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgaW5pdGlhbFZhbHVlID0gdmFsdWU7IC8vL1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHByZXNzaW9uRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZXhwcmVzc2lvbiA9IG51bGw7XG5cbiAgcmV0dXJuIGV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21Ob2Rlc1F1ZXJ5Tm9kZShub2Rlc1F1ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSBub2Rlc1F1ZXJ5Tm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUFzc2lnbm1lbnRGcm9tU3RlcE5vZGUoc3RlcE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGFycmF5QXNzaWdubWVudCA9IG51bGw7XG5cbiAgY29uc3QgYXJyYXlBc3NpZ25tZW50Tm9kZSA9IHN0ZXBOb2RlLmdldEFycmF5QXNzaWdubWVudE5vZGUoKTtcblxuICBpZiAoYXJyYXlBc3NpZ25tZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGFycmF5QXNzaWdubWVudCA9IGFycmF5QXNzaWdubWVudEZyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5QXNzaWdubWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlmRXhwcmVzc2lvbkZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBpZkV4cHJlc3Npb25Ob2RlID0gdGVybmFyeU5vZGUuZ2V0SWZFeHByZXNzaW9uTm9kZSgpLFxuICAgICAgICBpZkV4cHJlc3Npb24gPSBleHByZXNzaW9uRnJvbUV4cHJlc3Npb25Ob2RlKGlmRXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBpZkV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlUXVlcnlGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGVRdWVyeSA9IG51bGw7XG5cbiAgY29uc3Qgbm9kZVF1ZXJ5Tm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldE5vZGVRdWVyeU5vZGUoKTtcblxuICBpZiAobm9kZVF1ZXJ5Tm9kZSAhPT0gbnVsbCkge1xuICAgIG5vZGVRdWVyeSA9IG5vZGVRdWVyeUZyb21Ob2RlUXVlcnlOb2RlKG5vZGVRdWVyeU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIG5vZGVRdWVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlZnRUZXJtRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbGVmdFRlcm1Ob2RlID0gbG9naWNhbFRlcm1Ob2RlLmdldExlZnRUZXJtTm9kZSgpLFxuICAgICAgICBsZWZ0VGVybSA9IHRlcm1Gcm9tVGVybU5vZGUobGVmdFRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gbGVmdFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZXNGcm9tUHJvY2VkdXJlQ2FsbE5vZGUocHJvY2VkdXJlQ2FsbE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFsdWVzTm9kZSA9IHByb2NlZHVyZUNhbGxOb2RlLmdldFZhbHVlc05vZGUoKSxcbiAgICAgICAgdmFsdWVzID0gdmFsdWVzRnJvbVZhbHVlc05vZGUodmFsdWVzTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhbHVlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbVR5cGVBbmRWYXJpYWJsZU5vZGUodHlwZSwgdmFyaWFibGVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhbHVlID0gbnVsbDtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFsdWVOb2RlID0gcmV0dXJuU3RhdGVtZW50Tm9kZS5nZXRWYWx1ZU5vZGUoKSxcbiAgICAgICAgdmFsdWUgPSB2YWx1ZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RBc3NpZ25tZW50RnJvbVN0ZXBOb2RlKHN0ZXBOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBvYmplY3RBc3NpZ25tZW50ID0gbnVsbDtcblxuICBjb25zdCBvYmplY3RBc3NpZ25tZW50Tm9kZSA9IHN0ZXBOb2RlLmdldE9iamVjdEFzc2lnbm1lbnROb2RlKCk7XG5cbiAgaWYgKG9iamVjdEFzc2lnbm1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgb2JqZWN0QXNzaWdubWVudCA9IG9iamVjdEFzc2lnbm1lbnRGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUob2JqZWN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdEFzc2lnbm1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc1F1ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBub2Rlc1F1ZXJ5ID0gbnVsbDtcblxuICBjb25zdCBub2Rlc1F1ZXJ5Tm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldE5vZGVzUXVlcnlOb2RlKCk7XG5cbiAgaWYgKG5vZGVzUXVlcnlOb2RlICE9PSBudWxsKSB7XG4gICAgbm9kZXNRdWVyeSA9IG5vZGVzUXVlcnlGcm9tTm9kZXNRdWVyeU5vZGUobm9kZXNRdWVyeU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIG5vZGVzUXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByaWdodFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCByaWdodFRlcm1Ob2RlID0gbG9naWNhbFRlcm1Ob2RlLmdldFJpZ2h0VGVybU5vZGUoKSxcbiAgICAgICByaWdodFRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHJpZ2h0VGVybU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiByaWdodFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGVkRnJvbUNvbXBhcmlzb25UZXJtTm9kZShjb21wYXJpc29uVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmVnYXRlZCA9IGNvbXBhcmlzb25UZXJtTm9kZS5pc05lZ2F0ZWQoKTtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVsc2VFeHByZXNzaW9uRnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVsc2VFeHByZXNzaW9uTm9kZSA9IHRlcm5hcnlOb2RlLmdldEVsc2VFeHByZXNzaW9uTm9kZSgpLFxuICAgICAgICBlbHNlRXhwcmVzc2lvbiA9IGV4cHJlc3Npb25Gcm9tRXhwcmVzc2lvbk5vZGUoZWxzZUV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gZWxzZUV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5CbG9ja0Zyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgcmV0dXJuQmxvY2sgPSBudWxsO1xuXG4gIGNvbnN0IHJldHVybkJsb2NrTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldFJldHVybkJsb2NrTm9kZSgpO1xuXG4gIGlmIChyZXR1cm5CbG9ja05vZGUgIT09IG51bGwpIHtcbiAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJldHVybkJsb2NrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5vbnltb3VzUHJvY2VkdXJlRnJvbVNvbWVOb2RlKHNvbWVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGFub255bW91c1Byb2NlZHVyZU5vZGUgPSBzb21lTm9kZS5nZXRBbm9ueW1vdXNQcm9jZWR1cmVOb2RlKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZSA9IGFub255bW91c1Byb2NlZHVyZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBhbm9ueW1vdXNQcm9jZWR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub25zZW5zaWNhbEZyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5vbnNlbnNpY2FsID0gcmV0dXJuQmxvY2tOb2RlLmlzTm9uc2Vuc2ljYWwoKTtcblxuICByZXR1cm4gbm9uc2Vuc2ljYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tUHJvY2VkdXJlQ2FsbE5vZGUocHJvY2VkdXJlQ2FsbE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmVmZXJlbmNlTm9kZSA9IHByb2NlZHVyZUNhbGxOb2RlLmdldFJlZmVyZW5jZU5vZGUoKSxcbiAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlZnRUZXJtRnJvbUNvbXB6cmlzb25UZXJtTm9kZShjb21wYXJpc29uVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbGVmdFRlcm1Ob2RlID0gY29tcGFyaXNvblRlcm1Ob2RlLmdldExlZnRUZXJtTm9kZSgpLFxuICAgICAgICBsZWZ0VGVybSA9IHRlcm1Gcm9tVGVybU5vZGUobGVmdFRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gbGVmdFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNqdW5jdGlvbkZyb21Mb2dpY2FsVGVybU5vZGUobG9naWNhbFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGRpc2p1bmN0aW9uID0gbG9naWNhbFRlcm1Ob2RlLmlzRGlzanVuY3Rpb24oKTtcblxuICByZXR1cm4gZGlzanVuY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlTm9kZSA9IGFub255bW91c1Byb2NlZHVyZU5vZGUuZ2V0VHlwZU5vZGUoKSxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50c0Zyb21TdGVwTm9kZShzdGVwTm9kZSwgY29udGV4dCkge1xuICBsZXQgdmFyaWFibGVBc3NpZ25tZW50cyA9IG51bGw7XG5cbiAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50c05vZGUgPSBzdGVwTm9kZS5nZXRWYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSgpO1xuXG4gIGlmICh2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZSAhPT0gbnVsbCkge1xuICAgIHZhcmlhYmxlQXNzaWdubWVudHMgPSB2YXJpYWJsZUFzc2lnbm1lbnRzRnJvbVZhcmlhYmxlQXNzaWdubWVudHNOb2RlKHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZUFzc2lnbm1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUV2ZXJ5Tm9kZShldmVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYW5vbnltb3VzUHJvY2VkdXJlTm9kZSA9IGV2ZXJ5Tm9kZS5nZXRBbm9ueW1vdXNQcm9jZWR1cmVOb2RlKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZSA9IGFub255bW91c1Byb2NlZHVyZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBhbm9ueW1vdXNQcm9jZWR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBwcm9jZWR1cmVDYWxsID0gbnVsbDtcblxuICBjb25zdCBwcm9jZWR1cmVDYWxsTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldFByb2NlZHVyZUNhbGxOb2RlKCk7XG5cbiAgaWYgKHByb2NlZHVyZUNhbGxOb2RlICE9PSBudWxsKSB7XG4gICAgcHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGxGcm9tUHJvY2VkdXJlQ2FsbE5vZGUocHJvY2VkdXJlQ2FsbE5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByaWdodFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCByaWdodFRlcm1Ob2RlID0gY29tcGFyaXNvblRlcm1Ob2RlLmdldFJpZ2h0VGVybU5vZGUoKSxcbiAgICAgICAgcmlnaHRUZXJtID0gdGVybUZyb21UZXJtTm9kZShyaWdodFRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmlnaHRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tQXJyYXlBc3NpZ25tZW50Tm9kZShhcnJheUFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IGFycmF5QXNzaWdubWVudE5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZ3NGcm9tQXJyYXlBc3NpZ25tZW50Tm9kZShhcnJheUFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGJpbmRpbmdzTm9kZSA9IGFycmF5QXNzaWdubWVudE5vZGUuZ2V0QmluZGluZ3NOb2RlKCksXG4gICAgICAgIGJpbmRpbmdzID0gYmluZGluZ3NGcm9tQmluZGluZ3NOb2RlKGJpbmRpbmdzTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGJpbmRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21WYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSh2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlTm9kZSA9IHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLmdldFR5cGVOb2RlKCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFub255bW91c1Byb2NlZHVyZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYW5vbnltb3VzUHJvY2VkdXJlTm9kZSA9IHJlZHVjZU5vZGUuZ2V0QW5vbnltb3VzUHJvY2VkdXJlTm9kZSgpLFxuICAgICAgICBhbm9ueW1vdXNQcm9jZWR1cmUgPSBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUob2JqZWN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gb2JqZWN0QXNzaWdubWVudE5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOb2RlID0gcHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLmdldFR5cGVOb2RlKCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbGFiZWxOb2RlID0gcHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLmdldExhYmVsTm9kZSgpLFxuICAgICAgICBsYWJlbCA9IGxhYmVsRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldHVyblN0YXRlbWVudEZyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJldHVyblN0YXRlbWVudE5vZGUgPSByZXR1cm5CbG9ja05vZGUuZ2V0UmV0dXJuU3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICByZXR1cm5TdGF0ZW1lbnQgPSByZXR1cm5TdGF0ZW1lbnRGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZShyZXR1cm5TdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmV0dXJuU3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwcmVzc2lvbkZyb21WYXJpYWJsZUFzc2lnbm1lbnROb2RlKHZhcmlhYmxlQXNzaWdtZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBleHByZXNzaW9uTm9kZSA9IHZhcmlhYmxlQXNzaWdtZW50Tm9kZS5nZXRFeHByZXNzaW9uTm9kZSgpLFxuICAgICAgICBleHByZXNzaW9uID0gZXhwcmVzc2lvbkZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBwYXJhbWV0ZXJzTm9kZSA9IGFub255bW91c1Byb2NlZHVyZU5vZGUuZ2V0UGFyYW1ldGVyc05vZGUoKSxcbiAgICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNGcm9tUGFyYW1ldGVyc05vZGUocGFyYW1ldGVyc05vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuQmxvY2tGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJldHVybkJsb2NrTm9kZSA9IGFub255bW91c1Byb2NlZHVyZU5vZGUuZ2V0UmV0dXJuQmxvY2tOb2RlKCksXG4gICAgICAgIHJldHVybkJsb2NrID0gcmV0dXJuQmxvY2tGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJldHVybkJsb2NrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNOb2RlID0gcHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLmdldFBhcmFtZXRlcnNOb2RlKCksXG4gICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldHVybkJsb2NrRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmV0dXJuQmxvY2tOb2RlID0gcHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLmdldFJldHVybkJsb2NrTm9kZSgpLFxuICAgICAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiByZXR1cm5CbG9jaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gdmFyaWFibGVBc3NpZ25tZW50Tm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21UeXBlQW5kVmFyaWFibGVOb2RlKHR5cGUsIHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNBcnJheUZyb21UZXJtTm9kZXModGVybU5vZGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1zQXJyYXkgPSB0ZXJtTm9kZXMubWFwKCh0ZXJtTm9kZSkgPT4geyAvLy9cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zQXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZXNBcnJheUZyb21WYWx1ZU5vZGVzKHZhbHVlTm9kZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFsdWVzQXJyYXkgPSB2YWx1ZU5vZGVzLm1hcCgodmFsdWVOb2RlKSA9PiB7IC8vL1xuICAgIGNvbnN0IHZhbHVlID0gdmFsdWVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0pO1xuXG4gIHJldHVybiB2YWx1ZXNBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmdzQXJyYXlGcm9tQmluZGluZ3NOb2RlKGJpbmRpbmdzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBiaW5kaW5nTm9kZXMgPSBiaW5kaW5nc05vZGUuZ2V0QmluZGluZ05vZGVzKCksXG4gICAgICAgIGJpbmRpbmdzQXJyYXkgPSBiaW5kaW5nTm9kZXMubWFwKChiaW5kaW5nTm9kZSkgPT4geyAvLy9cbiAgICAgICAgICBjb25zdCBiaW5kaW5nID0gYmluZGluZ0Zyb21CaW5kaW5nTm9kZShiaW5kaW5nTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gYmluZGluZztcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIGJpbmRpbmdzQXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzQXJyYXlGcm9tUGFyYW1ldGVyc05vZGUocGFyYW1ldGVyc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcGFyYW1ldGVyTm9kZXMgPSBwYXJhbWV0ZXJzTm9kZS5nZXRQYXJhbWV0ZXJOb2RlcygpLFxuICAgICAgICBwYXJhbWV0ZXJzQXJyYXkgPSBwYXJhbWV0ZXJOb2Rlcy5tYXAoKHBhcmFtZXRlck5vZGUpID0+IHsgLy8vXG4gICAgICAgICAgY29uc3QgcGFyYW1ldGVyID0gcGFyYW1ldGVyRnJvbVBhcmFtZXRlck5vZGUocGFyYW1ldGVyTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZWRQYXJhbWV0ZXJzQXJyYXlGcm9tTmFtZWRCaW5kaW5nTm9kZXMobmFtZWRCaW5kaW5nTm9kZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZWRQYXJhbWV0ZXJzQXJyYXkgPSBuYW1lZEJpbmRpbmdOb2Rlcy5tYXAoKG5hbWVkQmluZGluZ05vZGUpID0+IHsgLy8vXG4gICAgY29uc3QgbmFtZWRCaW5kaW5nID0gbmFtZWRCaW5kaW5nRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbmFtZWRCaW5kaW5nO1xuICB9KTtcblxuICByZXR1cm4gbmFtZWRQYXJhbWV0ZXJzQXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXlGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNOb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlQXNzaWdubWVudE5vZGVzID0gdmFyaWFibGVBc3NpZ25tZW50c05vZGUuZ2V0VmFyaWFibGVBc3NpZ25tZW50Tm9kZXMoKSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50c0FycmF5ID0gdmFyaWFibGVBc3NpZ25tZW50Tm9kZXMubWFwKCh2YXJpYWJsZUFzc2lnbm1lbnROb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50ID0gdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlKHR5cGUsIHZhcmlhYmxlQXNzaWdubWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudDtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudHNBcnJheTtcbn1cbiJdLCJuYW1lcyI6WyJhbGlhc0Zyb21OYW1lZEJpbmRpbmdOb2RlIiwiYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUiLCJhbm9ueW1vdXNQcm9jZWR1cmVGcm9tRXZlcnlOb2RlIiwiYW5vbnltb3VzUHJvY2VkdXJlRnJvbVJlZHVjZU5vZGUiLCJhbm9ueW1vdXNQcm9jZWR1cmVGcm9tU29tZU5vZGUiLCJhcmd1bWVudFR5cGVGcm9tVHlwZU5vZGUiLCJhcnJheUFzc2lnbm1lbnRGcm9tQXJyYXlBc3NpZ25tZW50Tm9kZSIsImFycmF5QXNzaWdubWVudEZyb21TdGVwTm9kZSIsImJpbmRpbmdGcm9tQmluZGluZ05vZGUiLCJiaW5kaW5nc0FycmF5RnJvbUJpbmRpbmdzTm9kZSIsImJpbmRpbmdzRnJvbUFycmF5QXNzaWdubWVudE5vZGUiLCJiaW5kaW5nc0Zyb21CaW5kaW5nc05vZGUiLCJicmFja2V0ZWRUZXJtRnJvbUJyYWNrZXRlZFRlcm1Ob2RlIiwiYnJhY2tldGVkVGVybUZyb21UZXJtTm9kZSIsImNvbXBhcmlzb25UZXJtRnJvbUNvbXBhcmlzb25UZXJtTm9kZSIsImNvbXBhcmlzb25UZXJtRnJvbVRlcm1Ob2RlIiwiZGlzanVuY3Rpb25Gcm9tTG9naWNhbFRlcm1Ob2RlIiwiZWxpZGVkRnJvbUJpbmRpbmdOb2RlIiwiZWxzZUV4cHJlc3Npb25Gcm9tVGVybmFyeU5vZGUiLCJlcnJvckZyb21FcnJvck5vZGUiLCJldmVyeUZyb21FdmVyeU5vZGUiLCJldmVyeUZyb21FeHByZXNzaW9uTm9kZSIsImV4cHJlc3Npb25Gcm9tRXhwcmVzc2lvbk5vZGUiLCJleHByZXNzaW9uRnJvbVZhcmlhYmxlQXNzaWdubWVudE5vZGUiLCJleHByZXNzaW9uRnJvbVZhcmlhYmxlTm9kZSIsImlmRXhwcmVzc2lvbkZyb21UZXJuYXJ5Tm9kZSIsImluaXRpYWxWYWx1ZUZyb21SZWR1Y2VOb2RlIiwibGFiZWxGcm9tTGFiZWxOb2RlIiwibGFiZWxGcm9tUHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlIiwibGVmdFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlIiwibGVmdFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlIiwibG9naWNhbFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlIiwibG9naWNhbFRlcm1Gcm9tVGVybU5vZGUiLCJuYW1lRnJvbUJpbmRpbmdOb2RlIiwibmFtZUZyb21MYWJlbE5vZGUiLCJuYW1lRnJvbU5hbWVkQmluZGluZ05vZGUiLCJuYW1lRnJvbVBhcmFuZXRlck5vZGUiLCJuYW1lRnJvbVJlZmVyZW5jZU5vZGUiLCJuYW1lRnJvbVR5cGVOb2RlIiwibmFtZUZyb21WYXJpYWJsZU5vZGUiLCJuYW1lZEJpbmRpbmdGcm9tTmFtZWRCaW5kaW5nTm9kZSIsIm5hbWVkQmluZGluZ3NGcm9tTmFtZWRCaW5kaW5nc05vZGUiLCJuYW1lZEJpbmRpbmdzRnJvbU9iamVjdEFzc2lnbm1lbnROb2RlIiwibmFtZWRQYXJhbWV0ZXJzQXJyYXlGcm9tTmFtZWRCaW5kaW5nTm9kZXMiLCJuZWdhdGVkRnJvbUNvbXBhcmlzb25UZXJtTm9kZSIsIm5lZ2F0ZWRUZXJtRnJvbU5lZ2F0ZWRUZXJtTm9kZSIsIm5lZ2F0ZWRUZXJtRnJvbVRlcm1Ob2RlIiwibm9kZVF1ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlIiwibm9kZVF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUiLCJub2Rlc1F1ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlIiwibm9kZXNRdWVyeUZyb21Ob2Rlc1F1ZXJ5Tm9kZSIsIm5vbnNlbnNpY2FsRnJvbVJldHVybkJsb2NrTm9kZSIsIm9iamVjdEFzc2lnbm1lbnRGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUiLCJvYmplY3RBc3NpZ25tZW50RnJvbVN0ZXBOb2RlIiwicGFyYW1ldGVyRnJvbVBhcmFtZXRlck5vZGUiLCJwYXJhbWV0ZXJzQXJyYXlGcm9tUGFyYW1ldGVyc05vZGUiLCJwYXJhbWV0ZXJzRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUiLCJwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlIiwicGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUiLCJwcmltaXRpdmVGcm9tUHJpbWl0aXZlTm9kZSIsInByaW1pdGl2ZUZyb21UZXJtTm9kZSIsInByaW1pdGl2ZUZyb21WYWx1ZU5vZGUiLCJwcm9jZWR1cmVDYWxsRnJvbUV4cHJlc3Npb25Ob2RlIiwicHJvY2VkdXJlQ2FsbEZyb21Qcm9jZWR1cmVDYWxsTm9kZSIsInByb2NlZHVyZURlY2xhcmF0aW9uRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZSIsInByb2NlZHVyZUZyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUiLCJxdWVyeUZyb21Ob2RlUXVlcnlOb2RlIiwicXVlcnlGcm9tTm9kZXNRdWVyeU5vZGUiLCJyZWR1Y2VGcm9tRXhwcmVzc2lvbk5vZGUiLCJyZWR1Y2VGcm9tUmVkdWNlTm9kZSIsInJlZmVyZW5jZUZyb21Qcm9jZWR1cmVDYWxsTm9kZSIsInJlZmVyZW5jZUZyb21SZWZlcmVuY2VOb2RlIiwicmV0dXJuQmxvY2tGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsInJldHVybkJsb2NrRnJvbUV4cHJlc3Npb25Ob2RlIiwicmV0dXJuQmxvY2tGcm9tUHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlIiwicmV0dXJuQmxvY2tGcm9tUmV0dXJuQmxvY2tOb2RlIiwicmV0dXJuU3RhdGVtZW50RnJvbVJldHVybkJsb2NrTm9kZSIsInJldHVyblN0YXRlbWVudEZyb21SZXR1cm5TdGF0ZW1lbnROb2RlIiwicmlnaHRUZXJtRnJvbUNvbXB6cmlzb25UZXJtTm9kZSIsInJpZ2h0VGVybUZyb21Mb2dpY2FsVGVybU5vZGUiLCJzb21lRnJvbUV4cHJlc3Npb25Ob2RlIiwic29tZUZyb21Tb21lTm9kZSIsInN0ZXBGcm9tU3RlcE5vZGUiLCJzdGVwc0Zyb21SZXR1cm5CbG9ja05vZGUiLCJ0ZXJtRnJvbUJyYWNrZXRlZFRlcm1Ob2RlIiwidGVybUZyb21FeHByZXNzaW9uTm9kZSIsInRlcm1Gcm9tTmVnYXRlZFRlcm1Ob2RlIiwidGVybUZyb21UZXJtTm9kZSIsInRlcm1Gcm9tVGVybmFyeU5vZGUiLCJ0ZXJtc0FycmF5RnJvbVRlcm1Ob2RlcyIsInRlcm1zRnJvbVRlcm1zTm9kZSIsInRlcm5hcnlGcm9tRXhwcmVzc2lvbk5vZGUiLCJ0ZXJuYXJ5RnJvbVRlcm5hcnlOb2RlIiwidHlwZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlIiwidHlwZUZyb21CaW5kaW5nTm9kZSIsInR5cGVGcm9tTG9naWNhbFRlcm1Ob2RlIiwidHlwZUZyb21OYW1lZEJpbmRpbmdOb2RlIiwidHlwZUZyb21OZWdhdGVkVGVybU5vZGUiLCJ0eXBlRnJvbVBhcmFuZXRlck5vZGUiLCJ0eXBlRnJvbVByaW1pdGl2ZU5vZGUiLCJ0eXBlRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZSIsInR5cGVGcm9tVHlwZU5vZGUiLCJ0eXBlRnJvbVZhcmlhYmxlQXNzaWdubWVudHNOb2RlIiwidHlwZUZyb21WYXJpYWJsZU5vZGUiLCJ2YWx1ZUZyb21QcmltaXRpdmVOb2RlIiwidmFsdWVGcm9tUmVkdWNlTm9kZSIsInZhbHVlRnJvbVJldHVyblN0YXRlbWVudE5vZGUiLCJ2YWx1ZUZyb21UeXBlQW5kVmFyaWFibGVOb2RlIiwidmFsdWVGcm9tVmFsdWVOb2RlIiwidmFsdWVzQXJyYXlGcm9tVmFsdWVOb2RlcyIsInZhbHVlc0Zyb21Qcm9jZWR1cmVDYWxsTm9kZSIsInZhbHVlc0Zyb21WYWx1ZXNOb2RlIiwidmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlIiwidmFyaWFibGVBc3NpZ25tZW50c0FycmF5RnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSIsInZhcmlhYmxlQXNzaWdubWVudHNGcm9tU3RlcE5vZGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnRzRnJvbVZhcmlhYmxlQXNzaWdubWVudHNOb2RlIiwidmFyaWFibGVGcm9tQXJyYXlBc3NpZ25tZW50Tm9kZSIsInZhcmlhYmxlRnJvbUV2ZXJ5Tm9kZSIsInZhcmlhYmxlRnJvbU5vZGVRdWVyeU5vZGUiLCJ2YXJpYWJsZUZyb21Ob2Rlc1F1ZXJ5Tm9kZSIsInZhcmlhYmxlRnJvbU9iamVjdEFzc2lnbm1lbnROb2RlIiwidmFyaWFibGVGcm9tUmVkdWNlTm9kZSIsInZhcmlhYmxlRnJvbVNvbWVOb2RlIiwidmFyaWFibGVGcm9tVGVybU5vZGUiLCJ2YXJpYWJsZUZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50Tm9kZSIsInZhcmlhYmxlRnJvbVR5cGVBbmRWYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZUZyb21WYWx1ZU5vZGUiLCJ2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUiLCJzdGVwTm9kZSIsImNvbnRleHQiLCJTdGVwIiwiZWxlbWVudHMiLCJub2RlIiwic3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiYnJlYWtQb2ludCIsImFycmF5QXNzaWdubWVudCIsIm9iamVjdEFzc2lnbWVudCIsInZhcmlhYmxlQXNzaWdtZW50cyIsInN0ZXAiLCJzb21lTm9kZSIsIlNvbWUiLCJ2YXJpYWJsZSIsImFub255bW91c1Byb2NlZHVyZSIsInNvbWVTdHJpbmciLCJzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlIiwic29tZSIsInRlcm1Ob2RlIiwiVGVybSIsInByaW1pdGl2ZSIsIm5lZ2F0ZWRUZXJtIiwibG9naWNhbFRlcm0iLCJicmFja2V0ZWRUZXJtIiwiY29tcGFyaXNvblRlcm0iLCJwcm9wZXJ0aWVzIiwidGVybVN0cmluZyIsInRlcm1TdHJpbmdGcm9tUHJvcGVydGllcyIsInRlcm0iLCJ0eXBlTm9kZSIsIlR5cGUiLCJuYW1lIiwiYXJndW1lbnRUeXBlIiwidHlwZVN0cmluZyIsInR5cGVTdHJpbmdGcm9tTmFtZUFuZEFyZ3VtZW50VHlwZSIsInR5cGUiLCJ2YWx1ZU5vZGUiLCJWYWx1ZSIsInZhbHVlU3RyaW5nIiwidmFsdWVTdHJpbmdGcm9tUHJvcGVydGllcyIsInZhbHVlIiwidGVybXNOb2RlIiwiVGVybXMiLCJ0ZXJtTm9kZXMiLCJnZXRUZXJtTm9kZXMiLCJ0ZXJtc0FycmF5IiwiYXJyYXkiLCJ0ZXJtcyIsImVycm9yTm9kZSIsIkVycm9yIiwiZXJyb3IiLCJldmVyeU5vZGUiLCJFdmVyeSIsImV2ZXJ5U3RyaW5nIiwiZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJldmVyeSIsImxhYmVsTm9kZSIsIkxhYmVsIiwibGFiZWwiLCJ2YWx1ZXNOb2RlIiwiVmFsdWVzIiwidmFsdWVOb2RlcyIsImdldFZhbHVlTm9kZXMiLCJ2YWx1ZXNBcnJheSIsInZhbHVlcyIsInJlZHVjZU5vZGUiLCJSZWR1Y2UiLCJpbml0aWFsVmFsdWUiLCJyZWR1Y2VTdHJpbmciLCJyZWR1Y2VTdHJpbmdGcm9tVmFyaWFibGVJbml0aWFsRXhwcmVzc2lvbkFuZEFub255bW91c1Byb2NlZHVyZSIsInJlZHVjZSIsImJpbmRpbmdOb2RlIiwiQmluZGluZyIsImVsaWRlZCIsImJpbmRpbmciLCJ0ZXJuYXJ5Tm9kZSIsIlRlcm5hcnkiLCJpZkV4cHJlc3Npb24iLCJlbHNlRXhwcmVzc2lvbiIsInRlcm5hcnlTdHJpbmciLCJ0ZXJuYXJ5U3RyaW5nRnJvbVRlcm0iLCJ0ZXJuYXJ5IiwidmFyaWFibGVOb2RlIiwiVmFyaWFibGUiLCJleHByZXNzaW9uIiwiYmluZGluZ3NOb2RlIiwiQmluZGluZ3MiLCJiaW5kaW5nc0FycmF5IiwiYmluZGluZ3MiLCJyZWZlcmVuY2VOb2RlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlIiwicGFyYW1ldGVyTm9kZSIsIlBhcmFtZXRlciIsInBhcmFtZXRlciIsIm5vZGVRdWVyeU5vZGUiLCJOb2RlUXVlcnkiLCJxdWVyeSIsIm5vZGVRdWVyeSIsInByaW1pdGl2ZU5vZGUiLCJQcmltaXRpdmUiLCJub2Rlc1F1ZXJ5Tm9kZSIsIk5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5IiwicGFyYW1ldGVyc05vZGUiLCJQYXJhbWV0ZXJzIiwicGFyYW1ldGVyc0FycmF5IiwicGFyYW1ldGVycyIsImV4cHJlc3Npb25Ob2RlIiwiRXhwcmVzc2lvbiIsInJldHVybkJsb2NrIiwicHJvY2VkdXJlQ2FsbCIsImV4cHJlc3Npb25TdHJpbmciLCJleHByZXNzaW9uU3RyaW5nRnJvbVByb3BlcnRpZXMiLCJyZXR1cm5CbG9ja05vZGUiLCJSZXR1cm5CbG9jayIsInN0ZXBzIiwibm9uc2Vuc2ljYWwiLCJyZXR1cm5TdGF0ZW1lbnQiLCJyZXR1cm5CbG9ja1N0cmluZyIsInJldHVybkJsb2NrU3RyaW5nRnJvbVJldHVyblN0YXRlbWVudE5vZGUiLCJuZWdhdGVkVGVybU5vZGUiLCJOZWdhdGVkVGVybSIsImdldFRlcm1Ob2RlIiwibG9naWNhbFRlcm1Ob2RlIiwiTG9naWNhbFRlcm0iLCJkaXNqdW5jdGlvbiIsImxlZnRUZXJtIiwicmlnaHRUZXJtIiwibmFtZWRCaW5kaW5nTm9kZSIsIk5hbWVkQmluZGluZyIsImFsaWFzIiwibmFtZWRCaW5kaW5nIiwibmFtZWRCaW5kaW5nc05vZGUiLCJOYW1lZEJpbmRpbmdzIiwibmFtZWRCaW5kaW5nTm9kZXMiLCJnZXROYW1lZEJpbmRpbmdOb2RlcyIsIm5hbWVkQmluZGluZ3NBcnJheSIsIm5hbWVkQmluZGluZ3MiLCJicmFja2V0ZWRUZXJtTm9kZSIsIkJyYWNrZXRlZFRlcm0iLCJwcm9jZWR1cmVDYWxsTm9kZSIsIlByb2NlZHVyZUNhbGwiLCJjb21wYXJpc29uVGVybU5vZGUiLCJDb21wYXJpc29uVGVybSIsIm5lZ2F0ZWQiLCJvYmplY3RBc3NpZ25tZW50Tm9kZSIsImdldE5hbWVkQmluZGluZ3NOb2RlIiwicHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlIiwiUHJvY2VkdXJlIiwicHJvY2VkdXJlU3RyaW5nIiwicHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVMYWJlbFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayIsInByb2NlZHVyZSIsImFycmF5QXNzaWdubWVudE5vZGUiLCJBcnJheUFzc2lnbm1lbnQiLCJyZXR1cm5TdGF0ZW1lbnROb2RlIiwiUmV0dXJuU3RhdGVtZW50IiwiT2JqZWN0QXNzaWdtZW50Iiwib2JqZWN0QXNzaWdubWVudCIsImFub255bW91c1Byb2NlZHVyZU5vZGUiLCJBbm9ueW1vdXNQcm9jZWR1cmUiLCJub255bW91c1Byb2NlZHVyZVN0cmluZyIsImFub255bW91c1Byb2NlZHVyZVN0cmluZ0Zyb21UeXBlUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrIiwidmFyaWFibGVBc3NpZ25tZW50c05vZGUiLCJWYXJpYWJsZUFzc2lnbm1lbnRzIiwidmFyaWFibGVBc3NpZ25tZW50c0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nIiwidmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkiLCJ2YXJpYWJsZUFzc2lnbm1lbnRzIiwiUHJvY2VkdXJlRGVjbGFyYXRpb24iLCJwcm9jZWR1cmVEZWNsYXJhdGlvblN0cmluZyIsInByb2NlZHVyZURlY2xhcmF0aW9uU3RyaW5nRnJvbVByb2NlZHVyZSIsInByb2NlZHVyZURlY2xhcmF0aW9uIiwidmFyaWFibGVBc3NpZ25tZW50Tm9kZSIsIlZhcmlhYmxlQXNzaWdubWVudCIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGUiLCJhc3NpZ25tZW50IiwidmFyaWFibGVTdHJpbmciLCJ2YXJpYWJsZVN0cmluZ0Zyb21OYW1lIiwiZ2V0TmFtZSIsImdldFZhbHVlTm9kZSIsImdldFR5cGVOb2RlIiwiZ2V0VmFyaWFibGVOb2RlIiwiZ2V0UHJpbWl0aXZlTm9kZSIsImlzRWxpZGVkIiwidHlwZU5hbWUiLCJnZXRUeXBlTmFtZSIsImZyb21UeXBlTmFtZSIsImdldFNvbWVOb2RlIiwiZ2V0U3RyaW5nIiwiUXVlcnkiLCJmcm9tRXhwcmVzc2lvblN0cmluZyIsImdldFZhbHVlIiwiZ2V0RXZlcnlOb2RlIiwiZ2V0TmVnYXRlZFRlcm1Ob2RlIiwiZ2V0TG9naWNhbFRlcm1Ob2RlIiwiQk9PTEVBTl9UWVBFX05BTUUiLCJhcmd1bWVudFR5cGVOYW1lIiwiZ2V0QXJndW1lbnRUeXBlTmFtZSIsImdldFJlZHVjZU5vZGUiLCJzdGVwTm9kZXMiLCJnZXRTdGVwTm9kZXMiLCJtYXAiLCJnZXRBbGlhcyIsImdldFRlcm5hcnlOb2RlIiwiZ2V0QnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtTk9kZSIsImdldENvbXBhcmlzb25UZXJtTm9kZSIsImdldEFycmF5QXNzaWdubWVudE5vZGUiLCJpZkV4cHJlc3Npb25Ob2RlIiwiZ2V0SWZFeHByZXNzaW9uTm9kZSIsImdldE5vZGVRdWVyeU5vZGUiLCJsZWZ0VGVybU5vZGUiLCJnZXRMZWZ0VGVybU5vZGUiLCJnZXRWYWx1ZXNOb2RlIiwiZ2V0T2JqZWN0QXNzaWdubWVudE5vZGUiLCJnZXROb2Rlc1F1ZXJ5Tm9kZSIsInJpZ2h0VGVybU5vZGUiLCJnZXRSaWdodFRlcm1Ob2RlIiwiaXNOZWdhdGVkIiwiZWxzZUV4cHJlc3Npb25Ob2RlIiwiZ2V0RWxzZUV4cHJlc3Npb25Ob2RlIiwiZ2V0UmV0dXJuQmxvY2tOb2RlIiwiZ2V0QW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsImlzTm9uc2Vuc2ljYWwiLCJnZXRSZWZlcmVuY2VOb2RlIiwiaXNEaXNqdW5jdGlvbiIsImdldFZhcmlhYmxlQXNzaWdubWVudHNOb2RlIiwiZ2V0UHJvY2VkdXJlQ2FsbE5vZGUiLCJnZXRCaW5kaW5nc05vZGUiLCJnZXRMYWJlbE5vZGUiLCJnZXRSZXR1cm5TdGF0ZW1lbnROb2RlIiwidmFyaWFibGVBc3NpZ21lbnROb2RlIiwiZ2V0RXhwcmVzc2lvbk5vZGUiLCJnZXRQYXJhbWV0ZXJzTm9kZSIsImJpbmRpbmdOb2RlcyIsImdldEJpbmRpbmdOb2RlcyIsInBhcmFtZXRlck5vZGVzIiwiZ2V0UGFyYW1ldGVyTm9kZXMiLCJuYW1lZFBhcmFtZXRlcnNBcnJheSIsInZhcmlhYmxlQXNzaWdubWVudE5vZGVzIiwiZ2V0VmFyaWFibGVBc3NpZ25tZW50Tm9kZXMiLCJ2YXJpYWJsZUFzc2lnbm1lbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWk4QmdCQTtlQUFBQTs7UUE5WEFDO2VBQUFBOztRQWduQkFDO2VBQUFBOztRQStDQUM7ZUFBQUE7O1FBbkdBQztlQUFBQTs7UUE5T0FDO2VBQUFBOztRQTFYQUM7ZUFBQUE7O1FBc2ZBQztlQUFBQTs7UUExekJBQztlQUFBQTs7UUFnbkNBQztlQUFBQTs7UUEvR0FDO2VBQUFBOztRQWg5QkFDO2VBQUFBOztRQXNOQUM7ZUFBQUE7O1FBZ2dCQUM7ZUFBQUE7O1FBdGVBQztlQUFBQTs7UUF5ZkFDO2VBQUFBOztRQTZLQUM7ZUFBQUE7O1FBOWFBQztlQUFBQTs7UUFnWUFDO2VBQUFBOztRQXIrQkFDO2VBQUFBOztRQWFBQztlQUFBQTs7UUFzc0JBQztlQUFBQTs7UUE5ZUFDO2VBQUFBOztRQXk1QkFDO2VBQUFBOztRQXJRQUM7ZUFBQUE7O1FBeUJBQztlQUFBQTs7UUFoQ0FDO2VBQUFBOztRQXIxQkFDO2VBQUFBOztRQW1sQ0FDO2VBQUFBOztRQXBHQUM7ZUFBQUE7O1FBdkdBQztlQUFBQTs7UUFob0JBQztlQUFBQTs7UUFzY0FDO2VBQUFBOztRQTFNQUM7ZUFBQUE7O1FBcEJBQztlQUFBQTs7UUF1U0FDO2VBQUFBOztRQWxNQUM7ZUFBQUE7O1FBTUFDO2VBQUFBOztRQWpIQUM7ZUFBQUE7O1FBK0RBQztlQUFBQTs7UUFuUkFDO2VBQUFBOztRQWdCQUM7ZUFBQUE7O1FBdURBQztlQUFBQTs7UUF3MUJBQztlQUFBQTs7UUFuUEFDO2VBQUFBOztRQXZzQkFDO2VBQUFBOztRQXVjQUM7ZUFBQUE7O1FBMExBQztlQUFBQTs7UUFodkJBQztlQUFBQTs7UUFteUJBQztlQUFBQTs7UUFyd0JBQztlQUFBQTs7UUF3ekJBQztlQUFBQTs7UUFsbEJBQztlQUFBQTs7UUFtaEJBQztlQUFB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
|
|
1113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZWxlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwib2NjYW0tcXVlcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBCT09MRUFOX1RZUEVfTkFNRSB9IGZyb20gXCIuLi90eXBlTmFtZXNcIjtcbmltcG9ydCB7IHRlcm5hcnlTdHJpbmdGcm9tVGVybSxcbiAgICAgICAgIHZhcmlhYmxlU3RyaW5nRnJvbU5hbWUsXG4gICAgICAgICB0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMsXG4gICAgICAgICB2YWx1ZVN0cmluZ0Zyb21Qcm9wZXJ0aWVzLFxuICAgICAgICAgZXhwcmVzc2lvblN0cmluZ0Zyb21Qcm9wZXJ0aWVzLFxuICAgICAgICAgcHJvY2VkdXJlRGVjbGFyYXRpb25TdHJpbmdGcm9tUHJvY2VkdXJlLFxuICAgICAgICAgcmV0dXJuQmxvY2tTdHJpbmdGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIHZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGUsXG4gICAgICAgICBzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlLFxuICAgICAgICAgZXZlcnlTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUsXG4gICAgICAgICBwcm9jZWR1cmVTdHJpbmdGcm9tVHlwZUxhYmVsUGFyYW1ldGVyc0FuZFJldHVybkJsb2NrLFxuICAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2ssXG4gICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSxcbiAgICAgICAgIHJlZHVjZVN0cmluZ0Zyb21WYXJpYWJsZUluaXRpYWxFeHByZXNzaW9uQW5kQW5vbnltb3VzUHJvY2VkdXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0ZXBGcm9tU3RlcE5vZGUoc3RlcE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBTdGVwIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHN0ZXBOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgYXJyYXlBc3NpZ25tZW50ID0gYXJyYXlBc3NpZ25tZW50RnJvbVN0ZXBOb2RlKHN0ZXBOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgb2JqZWN0QXNzaWdtZW50ID0gb2JqZWN0QXNzaWdubWVudEZyb21TdGVwTm9kZShzdGVwTm9kZSwgY29udGV4dCksXG4gICAgICAgIHZhcmlhYmxlQXNzaWdtZW50cyA9IHZhcmlhYmxlQXNzaWdubWVudHNGcm9tU3RlcE5vZGUoc3RlcE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHN0ZXAgPSBuZXcgU3RlcChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5QXNzaWdubWVudCwgb2JqZWN0QXNzaWdtZW50LCB2YXJpYWJsZUFzc2lnbWVudHMpO1xuXG4gIHJldHVybiBzdGVwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZUZyb21Tb21lTm9kZShzb21lTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFNvbWUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gc29tZU5vZGUsICAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21Tb21lTm9kZShzb21lTm9kZSwgY29udGV4dCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZSA9IGFub255bW91c1Byb2NlZHVyZUZyb21Tb21lTm9kZShzb21lTm9kZSwgY29udGV4dCksXG4gICAgICAgIHNvbWVTdHJpbmcgPSBzb21lU3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlKHZhcmlhYmxlLCBhbm9ueW1vdXNQcm9jZWR1cmUpLFxuICAgICAgICBzdHJpbmcgPSBzb21lU3RyaW5nLCAgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHNvbWUgPSBuZXcgU29tZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBhbm9ueW1vdXNQcm9jZWR1cmUpO1xuXG4gIHJldHVybiBzb21lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzLFxuICAgIG5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgbmVnYXRlZFRlcm0gPSBuZWdhdGVkVGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgbG9naWNhbFRlcm0gPSBsb2dpY2FsVGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgYnJhY2tldGVkVGVybSA9IGJyYWNrZXRlZFRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIGNvbXBhcmlzb25UZXJtID0gY29tcGFyaXNvblRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgIHByb3BlcnRpZXMgPSBbXG4gICAgICB2YXJpYWJsZSxcbiAgICAgIHByaW1pdGl2ZSxcbiAgICAgIG5lZ2F0ZWRUZXJtLFxuICAgICAgbG9naWNhbFRlcm0sXG4gICAgICBicmFja2V0ZWRUZXJtLFxuICAgICAgY29tcGFyaXNvblRlcm1cbiAgICBdLFxuICAgIHRlcm1TdHJpbmcgPSB0ZXJtU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcywgY29udGV4dCksXG4gICAgc3RyaW5nID0gdGVybVN0cmluZywgIC8vL1xuICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHRlcm0gPSBuZXcgVGVybShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBwcmltaXRpdmUsIG5lZ2F0ZWRUZXJtLCBsb2dpY2FsVGVybSwgYnJhY2tldGVkVGVybSwgY29tcGFyaXNvblRlcm0pO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gdHlwZU5vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIG5hbWUgPSBuYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYXJndW1lbnRUeXBlID0gYXJndW1lbnRUeXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdHlwZSA9IG5ldyBUeXBlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgYXJndW1lbnRUeXBlKTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYWx1ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB2YWx1ZU5vZGUsICAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgICAgIHZhcmlhYmxlLFxuICAgICAgICAgIHByaW1pdGl2ZVxuICAgICAgICBdLFxuICAgICAgICB2YWx1ZVN0cmluZyA9IHZhbHVlU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcywgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHZhbHVlU3RyaW5nLCAgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHZhbHVlID0gbmV3IFZhbHVlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHByaW1pdGl2ZSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNGcm9tVGVybXNOb2RlKHRlcm1zTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFRlcm1zIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHRlcm1zTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICB0ZXJtTm9kZXMgPSB0ZXJtc05vZGUuZ2V0VGVybU5vZGVzKCksXG4gICAgICAgIHRlcm1zQXJyYXkgPSB0ZXJtc0FycmF5RnJvbVRlcm1Ob2Rlcyh0ZXJtTm9kZXMsIGNvbnRleHQpLFxuICAgICAgICBhcnJheSA9IHRlcm1zQXJyYXksIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB0ZXJtcyA9IG5ldyBUZXJtcyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvckZyb21FcnJvck5vZGUoZXJyb3JOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgRXJyb3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gZXJyb3JOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgcmV0dXJuIGVycm9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnlGcm9tRXZlcnlOb2RlKGV2ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEV2ZXJ5IH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGV2ZXJ5Tm9kZSwgLy8vXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tRXZlcnlOb2RlKGV2ZXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZSA9IGFub255bW91c1Byb2NlZHVyZUZyb21FdmVyeU5vZGUoZXZlcnlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgZXZlcnlTdHJpbmcgPSBldmVyeVN0cmluZ0Zyb21WYXJpYWJsZUFuZEFub255bW91c1Byb2NlZHVyZSh2YXJpYWJsZSwgYW5vbnltb3VzUHJvY2VkdXJlKSxcbiAgICAgICAgc3RyaW5nID0gZXZlcnlTdHJpbmcsIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBldmVyeSA9IG5ldyBFdmVyeShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBhbm9ueW1vdXNQcm9jZWR1cmUpO1xuXG4gIHJldHVybiBldmVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBsYWJlbE5vZGUsXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tTGFiZWxOb2RlKGxhYmVsTm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgbGFiZWwgPSBuZXcgTGFiZWwoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lKTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZXNGcm9tVmFsdWVzTm9kZSh2YWx1ZXNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVmFsdWVzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHZhbHVlc05vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgdmFsdWVOb2RlcyA9IHZhbHVlc05vZGUuZ2V0VmFsdWVOb2RlcygpLFxuICAgICAgICB2YWx1ZXNBcnJheSA9IHZhbHVlc0FycmF5RnJvbVZhbHVlTm9kZXModmFsdWVOb2RlcywgY29udGV4dCksXG4gICAgICAgIGFycmF5ID0gdmFsdWVzQXJyYXksIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB2YWx1ZXMgPSBuZXcgVmFsdWVzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgYXJyYXkpO1xuXG4gIHJldHVybiB2YWx1ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUmVkdWNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHJlZHVjZU5vZGUsICAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBpbml0aWFsVmFsdWUgPSBpbml0aWFsVmFsdWVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlID0gYW5vbnltb3VzUHJvY2VkdXJlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJlZHVjZVN0cmluZyA9IHJlZHVjZVN0cmluZ0Zyb21WYXJpYWJsZUluaXRpYWxFeHByZXNzaW9uQW5kQW5vbnltb3VzUHJvY2VkdXJlKHZhcmlhYmxlLCBpbml0aWFsVmFsdWUsIGFub255bW91c1Byb2NlZHVyZSksXG4gICAgICAgIHN0cmluZyA9IHJlZHVjZVN0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCByZWR1Y2UgPSBuZXcgUmVkdWNlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIGluaXRpYWxWYWx1ZSwgYW5vbnltb3VzUHJvY2VkdXJlKTtcblxuICByZXR1cm4gcmVkdWNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZ0Zyb21CaW5kaW5nTm9kZShiaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEJpbmRpbmcgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gYmluZGluZ05vZGUsIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpLFxuICAgICAgICBlbGlkZWQgPSBlbGlkZWRGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGJpbmRpbmcgPSBuZXcgQmluZGluZyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIG5hbWUsIGVsaWRlZCk7XG5cbiAgcmV0dXJuIGJpbmRpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJuYXJ5RnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVGVybmFyeSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB0ZXJuYXJ5Tm9kZSwgLy8vXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgaWZFeHByZXNzaW9uID0gaWZFeHByZXNzaW9uRnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgZWxzZUV4cHJlc3Npb24gPSBlbHNlRXhwcmVzc2lvbkZyb21UZXJuYXJ5Tm9kZSh0ZXJuYXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm5hcnlTdHJpbmcgPSB0ZXJuYXJ5U3RyaW5nRnJvbVRlcm0odGVybSksXG4gICAgICAgIHN0cmluZyA9IHRlcm5hcnlTdHJpbmcsIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB0ZXJuYXJ5ID0gbmV3IFRlcm5hcnkoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBpZkV4cHJlc3Npb24sIGVsc2VFeHByZXNzaW9uKTtcblxuICByZXR1cm4gdGVybmFyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSB2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCksXG4gICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbmFtZSwgZXhwcmVzc2lvbik7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZ3NGcm9tQmluZGluZ3NOb2RlKGJpbmRpbmdzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEJpbmRpbmdzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGJpbmRpbmdzTm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIGJpbmRpbmdzQXJyYXkgPSBiaW5kaW5nc0FycmF5RnJvbUJpbmRpbmdzTm9kZShiaW5kaW5nc05vZGUsIGNvbnRleHQpLFxuICAgICAgICBhcnJheSA9IGJpbmRpbmdzQXJyYXk7IC8vL1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IGJpbmRpbmdzID0gbmV3IEJpbmRpbmdzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgYXJyYXkpO1xuXG4gIHJldHVybiBiaW5kaW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBSZWZlcmVuY2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcmVmZXJlbmNlTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCByZWZlcmVuY2UgPSBuZXcgUmVmZXJlbmNlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlckZyb21QYXJhbWV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBQYXJhbWV0ZXIgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcGFyYW1ldGVyTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tUGFyYW5ldGVyTm9kZShwYXJhbWV0ZXJOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tUGFyYW5ldGVyTm9kZShwYXJhbWV0ZXJOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBwYXJhbWV0ZXIgPSBuZXcgUGFyYW1ldGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbmFtZSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVRdWVyeUZyb21Ob2RlUXVlcnlOb2RlKG5vZGVRdWVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBOb2RlUXVlcnkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gbm9kZVF1ZXJ5Tm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21Ob2RlUXVlcnlOb2RlKG5vZGVRdWVyeU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBxdWVyeSA9IHF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUobm9kZVF1ZXJ5Tm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3Qgbm9kZVF1ZXJ5ID0gbmV3IE5vZGVRdWVyeShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBxdWVyeSk7XG5cbiAgcmV0dXJuIG5vZGVRdWVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW1pdGl2ZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBQcmltaXRpdmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcHJpbWl0aXZlTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tUHJpbWl0aXZlTm9kZShwcmltaXRpdmVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFsdWUgPSB2YWx1ZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHByaW1pdGl2ZSA9IG5ldyBQcmltaXRpdmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCB2YWx1ZSk7XG5cbiAgcmV0dXJuIHByaW1pdGl2ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVzUXVlcnlGcm9tTm9kZXNRdWVyeU5vZGUobm9kZXNRdWVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBOb2Rlc1F1ZXJ5IH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IG5vZGVzUXVlcnlOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21Ob2Rlc1F1ZXJ5Tm9kZShub2Rlc1F1ZXJ5Tm9kZSwgY29udGV4dCksXG4gICAgICAgIHF1ZXJ5ID0gcXVlcnlGcm9tTm9kZXNRdWVyeU5vZGUobm9kZXNRdWVyeU5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG5vZGVzUXVlcnkgPSBuZXcgTm9kZXNRdWVyeShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBxdWVyeSk7XG5cbiAgcmV0dXJuIG5vZGVzUXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzRnJvbVBhcmFtZXRlcnNOb2RlKHBhcmFtZXRlcnNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUGFyYW1ldGVycyB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBwYXJhbWV0ZXJzTm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHBhcmFtZXRlcnNBcnJheSA9IHBhcmFtZXRlcnNBcnJheUZyb21QYXJhbWV0ZXJzTm9kZShwYXJhbWV0ZXJzTm9kZSwgY29udGV4dCksXG4gICAgICAgIGFycmF5ID0gcGFyYW1ldGVyc0FycmF5OyAvLy9cblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhcnJheSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHByZXNzaW9uRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgRXhwcmVzc2lvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBleHByZXNzaW9uTm9kZSwgIC8vL1xuICAgICAgICB0ZXJtID0gdGVybUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHNvbWUgPSBzb21lRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgZXZlcnkgPSBldmVyeUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJlZHVjZSA9IHJlZHVjZUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm5hcnkgPSB0ZXJuYXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9kZXNRdWVyeSA9IG5vZGVzUXVlcnlGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGxGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwcm9wZXJ0aWVzID0gW1xuICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgc29tZSxcbiAgICAgICAgICBldmVyeSxcbiAgICAgICAgICByZWR1Y2UsXG4gICAgICAgICAgdGVybmFyeSxcbiAgICAgICAgICBub2RlUXVlcnksXG4gICAgICAgICAgbm9kZXNRdWVyeSxcbiAgICAgICAgICByZXR1cm5CbG9jayxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsXG4gICAgICAgIF0sXG4gICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBleHByZXNzaW9uU3RyaW5nRnJvbVByb3BlcnRpZXMocHJvcGVydGllcywgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IGV4cHJlc3Npb25TdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgZXhwcmVzc2lvbiA9IG5ldyBFeHByZXNzaW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgc29tZSwgZXZlcnksIHJlZHVjZSwgdGVybmFyeSwgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5LCByZXR1cm5CbG9jaywgcHJvY2VkdXJlQ2FsbCk7XG5cbiAgcmV0dXJuIGV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5CbG9ja0Zyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUmV0dXJuQmxvY2sgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcmV0dXJuQmxvY2tOb2RlLCAvLy9cbiAgICAgICAgc3RlcHMgPSBzdGVwc0Zyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9uc2Vuc2ljYWwgPSBub25zZW5zaWNhbEZyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgcmV0dXJuU3RhdGVtZW50ID0gcmV0dXJuU3RhdGVtZW50RnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpLFxuICAgICAgICByZXR1cm5CbG9ja1N0cmluZyA9IHJldHVybkJsb2NrU3RyaW5nRnJvbVJldHVyblN0YXRlbWVudE5vZGUocmV0dXJuU3RhdGVtZW50KSxcbiAgICAgICAgc3RyaW5nID0gcmV0dXJuQmxvY2tTdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcmV0dXJuQmxvY2sgPSBuZXcgUmV0dXJuQmxvY2soY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGVwcywgbm9uc2Vuc2ljYWwsIHJldHVyblN0YXRlbWVudCk7XG5cbiAgcmV0dXJuIHJldHVybkJsb2NrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZFRlcm1Gcm9tTmVnYXRlZFRlcm1Ob2RlKG5lZ2F0ZWRUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE5lZ2F0ZWRUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IG5lZ2F0ZWRUZXJtTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdGVybU5vZGUgPSBuZWdhdGVkVGVybU5vZGUuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tTmVnYXRlZFRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgdGVybSA9IHRlcm1Gcm9tTmVnYXRlZFRlcm1Ob2RlKG5lZ2F0ZWRUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5lZ2F0ZWRUZXJtID0gbmV3IE5lZ2F0ZWRUZXJtKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgdGVybSk7XG5cbiAgcmV0dXJuIG5lZ2F0ZWRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9naWNhbFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IExvZ2ljYWxUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGxvZ2ljYWxUZXJtTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGRpc2p1bmN0aW9uID0gZGlzanVuY3Rpb25Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGxlZnRUZXJtID0gbGVmdFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJpZ2h0VGVybSA9IHJpZ2h0VGVybUZyb21Mb2dpY2FsVGVybU5vZGUobG9naWNhbFRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgbG9naWNhbFRlcm0gPSBuZXcgTG9naWNhbFRlcm0oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBkaXNqdW5jdGlvbiwgbGVmdFRlcm0sIHJpZ2h0VGVybSk7XG5cbiAgcmV0dXJuIGxvZ2ljYWxUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZWRCaW5kaW5nRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE5hbWVkQmluZGluZyB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBuYW1lZEJpbmRpbmdOb2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZSA9IG5hbWVGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgYWxpYXMgPSBhbGlhc0Zyb21OYW1lZEJpbmRpbmdOb2RlKG5hbWVkQmluZGluZ05vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG5hbWVkQmluZGluZyA9IG5ldyBOYW1lZEJpbmRpbmcoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBuYW1lLCBhbGlhcyk7XG5cbiAgcmV0dXJuIG5hbWVkQmluZGluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVkQmluZGluZ3NGcm9tTmFtZWRCaW5kaW5nc05vZGUobmFtZWRCaW5kaW5nc05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBOYW1lZEJpbmRpbmdzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IG5hbWVkQmluZGluZ3NOb2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBuYW1lZEJpbmRpbmdOb2RlcyA9IG5hbWVkQmluZGluZ3NOb2RlLmdldE5hbWVkQmluZGluZ05vZGVzKCksXG4gICAgICAgIG5hbWVkQmluZGluZ3NBcnJheSA9IG5hbWVkUGFyYW1ldGVyc0FycmF5RnJvbU5hbWVkQmluZGluZ05vZGVzKG5hbWVkQmluZGluZ05vZGVzLCBjb250ZXh0KSxcbiAgICAgICAgYXJyYXkgPSBuYW1lZEJpbmRpbmdzQXJyYXk7IC8vL1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG5hbWVkQmluZGluZ3MgPSBuZXcgTmFtZWRCaW5kaW5ncyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFycmF5KTtcblxuICByZXR1cm4gbmFtZWRCaW5kaW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyYWNrZXRlZFRlcm1Gcm9tQnJhY2tldGVkVGVybU5vZGUoYnJhY2tldGVkVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBCcmFja2V0ZWRUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IGJyYWNrZXRlZFRlcm1Ob2RlLCAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbUJyYWNrZXRlZFRlcm1Ob2RlKGJyYWNrZXRlZFRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgYnJhY2tldGVkVGVybSA9IG5ldyBCcmFja2V0ZWRUZXJtKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSk7XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbVByb2NlZHVyZUNhbGxOb2RlKHByb2NlZHVyZUNhbGxOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBwcm9jZWR1cmVDYWxsTm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbVByb2NlZHVyZUNhbGxOb2RlKHByb2NlZHVyZUNhbGxOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFsdWVzID0gdmFsdWVzRnJvbVByb2NlZHVyZUNhbGxOb2RlKHByb2NlZHVyZUNhbGxOb2RlLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBwcm9jZWR1cmVDYWxsID0gbmV3IFByb2NlZHVyZUNhbGwoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCByZWZlcmVuY2UsIHZhbHVlcyk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJpc29uVGVybUZyb21Db21wYXJpc29uVGVybU5vZGUoY29tcGFyaXNvblRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgQ29tcGFyaXNvblRlcm0gfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gY29tcGFyaXNvblRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tQ29tcGFyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIGxlZnRUZXJtID0gbGVmdFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJpZ2h0VGVybSA9IHJpZ2h0VGVybUZyb21Db21wenJpc29uVGVybU5vZGUoY29tcGFyaXNvblRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgY29tcGFyaXNvblRlcm0gPSBuZXcgQ29tcGFyaXNvblRlcm0oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuZWdhdGVkLCBsZWZ0VGVybSwgcmlnaHRUZXJtKTtcblxuICByZXR1cm4gY29tcGFyaXNvblRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lZEJpbmRpbmdzRnJvbU9iamVjdEFzc2lnbm1lbnROb2RlKG9iamVjdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWVkQmluZGluZ3NOb2RlID0gb2JqZWN0QXNzaWdubWVudE5vZGUuZ2V0TmFtZWRCaW5kaW5nc05vZGUoKSxcbiAgICAgICAgbmFtZWRCaW5kaW5ncyA9IG5hbWVkQmluZGluZ3NGcm9tTmFtZWRCaW5kaW5nc05vZGUobmFtZWRCaW5kaW5nc05vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBuYW1lZEJpbmRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBQcm9jZWR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCAgLy8vXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBsYWJlbCA9IGxhYmVsRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcmV0dXJuQmxvY2sgPSByZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJvY2VkdXJlU3RyaW5nID0gcHJvY2VkdXJlU3RyaW5nRnJvbVR5cGVMYWJlbFBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBsYWJlbCwgcGFyYW1ldGVycywgcmV0dXJuQmxvY2spLFxuICAgICAgICBzdHJpbmcgPSBwcm9jZWR1cmVTdHJpbmcsIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgcHJvY2VkdXJlID0gbmV3IFByb2NlZHVyZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIGxhYmVsLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jayk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5QXNzaWdubWVudEZyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBBcnJheUFzc2lnbm1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gYXJyYXlBc3NpZ25tZW50Tm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBiaW5kaW5ncyA9IGJpbmRpbmdzRnJvbUFycmF5QXNzaWdubWVudE5vZGUoYXJyYXlBc3NpZ25tZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgYXJyYXlBc3NpZ25tZW50ID0gbmV3IEFycmF5QXNzaWdubWVudChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBiaW5kaW5ncyk7XG5cbiAgcmV0dXJuIGFycmF5QXNzaWdubWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldHVyblN0YXRlbWVudEZyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBSZXR1cm5TdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcmV0dXJuU3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFsdWUgPSB2YWx1ZUZyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHJldHVyblN0YXRlbWVudCA9IG5ldyBSZXR1cm5TdGF0ZW1lbnQoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YWx1ZSk7XG5cbiAgcmV0dXJuIHJldHVyblN0YXRlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdEFzc2lnbm1lbnRGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUob2JqZWN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBPYmplY3RBc3NpZ21lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gb2JqZWN0QXNzaWdubWVudE5vZGUsICAvLy9cbiAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbU9iamVjdEFzc2lnbm1lbnROb2RlKG9iamVjdEFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbmFtZWRCaW5kaW5ncyA9IG5hbWVkQmluZGluZ3NGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUob2JqZWN0QXNzaWdubWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IG9iamVjdEFzc2lnbm1lbnQgPSBuZXcgT2JqZWN0QXNzaWdtZW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIG5hbWVkQmluZGluZ3MpO1xuXG4gIHJldHVybiBvYmplY3RBc3NpZ25tZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IEFub255bW91c1Byb2NlZHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG5vZGUgPSBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCAgLy8vXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHJldHVybkJsb2NrID0gcmV0dXJuQmxvY2tGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmcgPSBhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayh0eXBlLCBwYXJhbWV0ZXJzLCByZXR1cm5CbG9jayksXG4gICAgICAgIHN0cmluZyA9IG5vbnltb3VzUHJvY2VkdXJlU3RyaW5nLCAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgYW5vbnltb3VzUHJvY2VkdXJlID0gbmV3IEFub255bW91c1Byb2NlZHVyZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHBhcmFtZXRlcnMsIHJldHVybkJsb2NrKTtcblxuICByZXR1cm4gYW5vbnltb3VzUHJvY2VkdXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVBc3NpZ25tZW50c0Zyb21WYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSh2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFZhcmlhYmxlQXNzaWdubWVudHMgfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gdmFyaWFibGVBc3NpZ25tZW50c05vZGUsIC8vL1xuICAgICAgICB0eXBlID0gdHlwZUZyb21WYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSh2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZSwgY29udGV4dCksXG4gICAgICAgIHZhcmlhYmxlQXNzaWdubWVudHNBcnJheSA9IHZhcmlhYmxlQXNzaWdubWVudHNBcnJheUZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50c05vZGUodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50c05vZGUsIGNvbnRleHQpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmcgPSB2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNBcnJheSh0eXBlLCB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkpLFxuICAgICAgICBhcnJheSA9IHZhcmlhYmxlQXNzaWdubWVudHNBcnJheSwgLy8vXG4gICAgICAgIHN0cmluZyA9IHZhcmlhYmxlQXNzaWdubWVudFN0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB2YXJpYWJsZUFzc2lnbm1lbnRzID0gbmV3IFZhcmlhYmxlQXNzaWdubWVudHMoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhcnJheSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVEZWNsYXJhdGlvbkZyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUHJvY2VkdXJlRGVjbGFyYXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBub2RlID0gcHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCAgLy8vXG4gICAgICAgIHByb2NlZHVyZSA9IHByb2NlZHVyZUZyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgcHJvY2VkdXJlRGVjbGFyYXRpb25TdHJpbmcgPSBwcm9jZWR1cmVEZWNsYXJhdGlvblN0cmluZ0Zyb21Qcm9jZWR1cmUocHJvY2VkdXJlKSxcbiAgICAgICAgc3RyaW5nID0gcHJvY2VkdXJlRGVjbGFyYXRpb25TdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcHJvY2VkdXJlRGVjbGFyYXRpb24gPSBuZXcgUHJvY2VkdXJlRGVjbGFyYXRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBwcm9jZWR1cmUpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVEZWNsYXJhdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50Tm9kZSh0eXBlLCB2YXJpYWJsZUFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVmFyaWFibGVBc3NpZ25tZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHZhcmlhYmxlQXNzaWdubWVudE5vZGUsICAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50Tm9kZSh0eXBlLCB2YXJpYWJsZUFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25Gcm9tVmFyaWFibGVBc3NpZ25tZW50Tm9kZSh2YXJpYWJsZUFzc2lnbm1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nID0gdmFyaWFibGVBc3NpZ25tZW50U3RyaW5nRnJvbVR5cGVBbmRWYXJpYWJsZSh0eXBlLCB2YXJpYWJsZSwgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHZhcmlhYmxlQXNzaWdubWVudFN0cmluZywgIC8vL1xuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgYXNzaWdubWVudCA9IG5ldyBWYXJpYWJsZUFzc2lnbm1lbnQoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgZXhwcmVzc2lvbik7XG5cbiAgcmV0dXJuIGFzc2lnbm1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21UeXBlQW5kVmFyaWFibGVOb2RlKHR5cGUsIHZhcmlhYmxlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbm9kZSA9IHZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICBuYW1lID0gbmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgdmFsdWUgPSB2YWx1ZUZyb21UeXBlQW5kVmFyaWFibGVOb2RlKHR5cGUsIHZhcmlhYmxlTm9kZSwgY29udGV4dCksXG4gICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGVTdHJpbmdGcm9tTmFtZShuYW1lKSxcbiAgICAgICAgc3RyaW5nID0gdmFyaWFibGVTdHJpbmcsICAvLy9cbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgIHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgbmFtZSwgdmFsdWUpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IHR5cGVOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tTGFiZWxOb2RlKGxhYmVsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lID0gbGFiZWxOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZU5vZGUgPSByZWR1Y2VOb2RlLmdldFZhbHVlTm9kZSgpLFxuICAgICAgICB2YWx1ZSA9IHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tVGVybmFyeU5vZGUodGVybmFyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJuYXJ5Tm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWUgPSBiaW5kaW5nTm9kZS5nZXROYW1lKCk7XG5cbiAgcmV0dXJuIG5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KSB7XG4gIGxldCB0eXBlID0gbnVsbDtcblxuICBjb25zdCB0eXBlTm9kZSA9IGJpbmRpbmdOb2RlLmdldFR5cGVOb2RlKCk7XG5cbiAgaWYgKHR5cGVOb2RlICE9IG51bGwpIHtcbiAgICB0eXBlID0gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbVNvbWVOb2RlKHNvbWVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHNvbWVOb2RlLmdldFZhcmlhYmxlTm9kZSgpLCAvLy9cbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICBsZXQgdmFyaWFibGUgPSBudWxsO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHRlcm1Ob2RlLmdldFZhcmlhYmxlTm9kZSgpO1xuXG4gIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSB7XG4gIGNvbnN0IG5hbWUgPSB2YXJpYWJsZU5vZGUuZ2V0TmFtZSgpO1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGUgPSBudWxsO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbWl0aXZlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBwcmltaXRpdmUgPSBudWxsO1xuXG4gIGNvbnN0IHByaW1pdGl2ZU5vZGUgPSB0ZXJtTm9kZS5nZXRQcmltaXRpdmVOb2RlKCk7XG5cbiAgaWYgKHByaW1pdGl2ZU5vZGUgIT09IG51bGwpIHtcbiAgICBwcmltaXRpdmUgPSBwcmltaXRpdmVGcm9tUHJpbWl0aXZlTm9kZShwcmltaXRpdmVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBwcmltaXRpdmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21FdmVyeU5vZGUoZXZlcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IGV2ZXJ5Tm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbGlkZWRGcm9tQmluZGluZ05vZGUoYmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZWxpZGVkID0gYmluZGluZ05vZGUuaXNFbGlkZWQoKTtcblxuICByZXR1cm4gZWxpZGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21QYXJhbmV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZU5vZGUgPSBwYXJhbWV0ZXJOb2RlLmdldFR5cGVOb2RlKCksXG4gICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tUGFyYW5ldGVyTm9kZShwYXJhbWV0ZXJOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWUgPSBwYXJhbWV0ZXJOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWUgPSByZWZlcmVuY2VOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tUHJpbWl0aXZlTm9kZShwcmltaXRpdmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVHlwZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHR5cGVOYW1lID0gcHJpbWl0aXZlTm9kZS5nZXRUeXBlTmFtZSgpLFxuICAgICAgICB0eXBlID0gVHlwZS5mcm9tVHlwZU5hbWUodHlwZU5hbWUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tVmFsdWVOb2RlKHZhbHVlTm9kZSwgY29udGV4dCkge1xuICBsZXQgdmFyaWFibGUgPSBudWxsO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhbHVlTm9kZS5nZXRWYXJpYWJsZU5vZGUoKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW1pdGl2ZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBwcmltaXRpdmUgPSBudWxsO1xuXG4gIGNvbnN0IHByaW1pdGl2ZU5vZGUgPSB2YWx1ZU5vZGUuZ2V0UHJpbWl0aXZlTm9kZSgpO1xuXG4gIGlmIChwcmltaXRpdmVOb2RlICE9PSBudWxsKSB7XG4gICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbVByaW1pdGl2ZU5vZGUocHJpbWl0aXZlTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJpbWl0aXZlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tUmVkdWNlTm9kZShyZWR1Y2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHJlZHVjZU5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgdGVybSA9IG51bGw7XG5cbiAgY29uc3QgdGVybU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRUZXJtTm9kZSgpO1xuXG4gIGlmICh0ZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgc29tZSA9IG51bGw7XG5cbiAgY29uc3Qgc29tZU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRTb21lTm9kZSgpO1xuXG4gIGlmIChzb21lTm9kZSAhPT0gbnVsbCkge1xuICAgIHNvbWUgPSBzb21lRnJvbVNvbWVOb2RlKHNvbWVOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzb21lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlGcm9tTm9kZVF1ZXJ5Tm9kZShub2RlUXVlcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0cmluZyA9IG5vZGVRdWVyeU5vZGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgcXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvblN0cmluZyhleHByZXNzaW9uU3RyaW5nKTtcblxuICByZXR1cm4gcXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZyb21QcmltaXRpdmVOb2RlKHByaW1pdGl2ZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFsdWUgPSBwcmltaXRpdmVOb2RlLmdldFZhbHVlKCk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlGcm9tTm9kZXNRdWVyeU5vZGUobm9kZXNRdWVyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZXNRdWVyeU5vZGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGV4cHJlc3Npb25TdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgcXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvblN0cmluZyhleHByZXNzaW9uU3RyaW5nKTtcblxuICByZXR1cm4gcXVlcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVyeUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgZXZlcnkgPSBudWxsO1xuXG4gIGNvbnN0IGV2ZXJ5Tm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldEV2ZXJ5Tm9kZSgpO1xuXG4gIGlmIChldmVyeU5vZGUgIT09IG51bGwpIHtcbiAgICBldmVyeSA9IGV2ZXJ5RnJvbUV2ZXJ5Tm9kZShldmVyeU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGV2ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZFRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG5lZ2F0ZWRUZXJtID0gbnVsbDtcblxuICBjb25zdCBuZWdhdGVkVGVybU5vZGUgPSB0ZXJtTm9kZS5nZXROZWdhdGVkVGVybU5vZGUoKTtcblxuICBpZiAobmVnYXRlZFRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgbmVnYXRlZFRlcm0gPSBuZWdhdGVkVGVybUZyb21OZWdhdGVkVGVybU5vZGUobmVnYXRlZFRlcm1Ob2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBuZWdhdGVkVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ2ljYWxUZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCBsb2dpY2FsVGVybSA9IG51bGw7XG5cbiAgY29uc3QgbG9naWNhbFRlcm1Ob2RlID0gdGVybU5vZGUuZ2V0TG9naWNhbFRlcm1Ob2RlKCk7XG5cbiAgaWYgKGxvZ2ljYWxUZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgIGxvZ2ljYWxUZXJtID0gbG9naWNhbFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbG9naWNhbFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZSA9IEJPT0xFQU5fVFlQRV9OQU1FO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21OZWdhdGVkVGVybU5vZGUobG9naWNhbFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGUgPSBCT09MRUFOX1RZUEVfTkFNRTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tTmVnYXRlZFRlcm1Ob2RlKG5lZ2F0ZWRUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IG5lZ2F0ZWRUZXJtTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmd1bWVudFR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGFyZ3VtZW50VHlwZSA9IG51bGw7XG5cbiAgY29uc3QgYXJndW1lbnRUeXBlTmFtZSA9IHR5cGVOb2RlLmdldEFyZ3VtZW50VHlwZU5hbWUoKTtcblxuICBpZiAoYXJndW1lbnRUeXBlTmFtZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgVHlwZSB9ID0gZWxlbWVudHM7XG5cbiAgICBhcmd1bWVudFR5cGUgPSBUeXBlLmZyb21UeXBlTmFtZShhcmd1bWVudFR5cGVOYW1lLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBhcmd1bWVudFR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHJlZHVjZSA9IG51bGw7XG5cbiAgY29uc3QgcmVkdWNlTm9kZSA9IGV4cHJlc3Npb25Ob2RlLmdldFJlZHVjZU5vZGUoKTtcblxuICBpZiAocmVkdWNlTm9kZSAhPT0gbnVsbCkge1xuICAgIHJlZHVjZSA9IHJlZHVjZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlZHVjZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0ZXBzRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RlcE5vZGVzID0gcmV0dXJuQmxvY2tOb2RlLmdldFN0ZXBOb2RlcygpLFxuICAgICAgICBzdGVwcyA9IHN0ZXBOb2Rlcy5tYXAoKHN0ZXBOb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RlcCA9IHN0ZXBGcm9tU3RlcE5vZGUoc3RlcE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBzdGVwcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOb2RlID0gbmFtZWRCaW5kaW5nTm9kZS5nZXRUeXBlTm9kZSgpLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbU5hbWVkQmluZGluZ05vZGUobmFtZWRCaW5kaW5nTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuYW1lID0gbmFtZWRCaW5kaW5nTm9kZS5nZXROYW1lKCk7XG5cbiAgcmV0dXJuIG5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhc0Zyb21OYW1lZEJpbmRpbmdOb2RlKG5hbWVkQmluZGluZ05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYWxpYXMgPSBuYW1lZEJpbmRpbmdOb2RlLmdldEFsaWFzKCk7XG5cbiAgcmV0dXJuIGFsaWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tTm9kZVF1ZXJ5Tm9kZShub2RlUXVlcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IG5vZGVRdWVyeU5vZGUuZ2V0VmFyaWFibGVOb2RlKCksXG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybmFyeUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgdGVybmFyeSA9IG51bGw7XG5cbiAgY29uc3QgdGVybmFyeU5vZGUgPSBleHByZXNzaW9uTm9kZS5nZXRUZXJuYXJ5Tm9kZSgpO1xuXG4gIGlmICh0ZXJuYXJ5Tm9kZSAhPT0gbnVsbCkge1xuICAgIHRlcm5hcnkgPSB0ZXJuYXJ5RnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJuYXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJhY2tldGVkVGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICBsZXQgYnJhY2tldGVkVGVybSA9IG51bGw7XG5cbiAgY29uc3QgYnJhY2tldGVkVGVybU5vZGUgPSB0ZXJtTm9kZS5nZXRCcmFja2V0ZWRUZXJtTm9kZSgpO1xuXG4gIGlmIChicmFja2V0ZWRUZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgIGJyYWNrZXRlZFRlcm0gPSBicmFja2V0ZWRUZXJtRnJvbUJyYWNrZXRlZFRlcm1Ob2RlKGJyYWNrZXRlZFRlcm1Ob2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRUZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21CcmFja2V0ZWRUZXJtTm9kZShicmFja2V0ZWRUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IGJyYWNrZXRlZFRlcm1Ob2RlLmdldFRlcm1Ob2RlKCksXG4gICAgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyaXNvblRlcm1Gcm9tVGVybU5vZGUodGVybU5PZGUsIGNvbnRleHQpIHtcbiAgbGV0IGNvbXBhcmlzb25UZXJtID0gbnVsbDtcblxuICBjb25zdCBjb21wYXJpc29uVGVybU5vZGUgPSB0ZXJtTk9kZS5nZXRDb21wYXJpc29uVGVybU5vZGUoKTtcblxuICBpZiAoY29tcGFyaXNvblRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgY29tcGFyaXNvblRlcm0gPSBjb21wYXJpc29uVGVybUZyb21Db21wYXJpc29uVGVybU5vZGUoY29tcGFyaXNvblRlcm1Ob2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBjb21wYXJpc29uVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxWYWx1ZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZUZyb21SZWR1Y2VOb2RlKHJlZHVjZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICBpbml0aWFsVmFsdWUgPSB2YWx1ZTsgLy8vXG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cHJlc3Npb25Gcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBleHByZXNzaW9uID0gbnVsbDtcblxuICByZXR1cm4gZXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlRnJvbU5vZGVzUXVlcnlOb2RlKG5vZGVzUXVlcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IG5vZGVzUXVlcnlOb2RlLmdldFZhcmlhYmxlTm9kZSgpLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5QXNzaWdubWVudEZyb21TdGVwTm9kZShzdGVwTm9kZSwgY29udGV4dCkge1xuICBsZXQgYXJyYXlBc3NpZ25tZW50ID0gbnVsbDtcblxuICBjb25zdCBhcnJheUFzc2lnbm1lbnROb2RlID0gc3RlcE5vZGUuZ2V0QXJyYXlBc3NpZ25tZW50Tm9kZSgpO1xuXG4gIGlmIChhcnJheUFzc2lnbm1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgYXJyYXlBc3NpZ25tZW50ID0gYXJyYXlBc3NpZ25tZW50RnJvbUFycmF5QXNzaWdubWVudE5vZGUoYXJyYXlBc3NpZ25tZW50Tm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gYXJyYXlBc3NpZ25tZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWZFeHByZXNzaW9uRnJvbVRlcm5hcnlOb2RlKHRlcm5hcnlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGlmRXhwcmVzc2lvbk5vZGUgPSB0ZXJuYXJ5Tm9kZS5nZXRJZkV4cHJlc3Npb25Ob2RlKCksXG4gICAgICAgIGlmRXhwcmVzc2lvbiA9IGV4cHJlc3Npb25Gcm9tRXhwcmVzc2lvbk5vZGUoaWZFeHByZXNzaW9uTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGlmRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVRdWVyeUZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgbm9kZVF1ZXJ5ID0gbnVsbDtcblxuICBjb25zdCBub2RlUXVlcnlOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0Tm9kZVF1ZXJ5Tm9kZSgpO1xuXG4gIGlmIChub2RlUXVlcnlOb2RlICE9PSBudWxsKSB7XG4gICAgbm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUobm9kZVF1ZXJ5Tm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbm9kZVF1ZXJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVmdFRlcm1Gcm9tTG9naWNhbFRlcm1Ob2RlKGxvZ2ljYWxUZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsZWZ0VGVybU5vZGUgPSBsb2dpY2FsVGVybU5vZGUuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgIGxlZnRUZXJtID0gdGVybUZyb21UZXJtTm9kZShsZWZ0VGVybU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBsZWZ0VGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc0Zyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZXNOb2RlID0gcHJvY2VkdXJlQ2FsbE5vZGUuZ2V0VmFsdWVzTm9kZSgpLFxuICAgICAgICB2YWx1ZXMgPSB2YWx1ZXNGcm9tVmFsdWVzTm9kZSh2YWx1ZXNOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFsdWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGcm9tVHlwZUFuZFZhcmlhYmxlTm9kZSh0eXBlLCB2YXJpYWJsZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFsdWUgPSBudWxsO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbVJldHVyblN0YXRlbWVudE5vZGUocmV0dXJuU3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZU5vZGUgPSByZXR1cm5TdGF0ZW1lbnROb2RlLmdldFZhbHVlTm9kZSgpLFxuICAgICAgICB2YWx1ZSA9IHZhbHVlRnJvbVZhbHVlTm9kZSh2YWx1ZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdEFzc2lnbm1lbnRGcm9tU3RlcE5vZGUoc3RlcE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG9iamVjdEFzc2lnbm1lbnQgPSBudWxsO1xuXG4gIGNvbnN0IG9iamVjdEFzc2lnbm1lbnROb2RlID0gc3RlcE5vZGUuZ2V0T2JqZWN0QXNzaWdubWVudE5vZGUoKTtcblxuICBpZiAob2JqZWN0QXNzaWdubWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBvYmplY3RBc3NpZ25tZW50ID0gb2JqZWN0QXNzaWdubWVudEZyb21PYmplY3RBc3NpZ25tZW50Tm9kZShvYmplY3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gb2JqZWN0QXNzaWdubWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVzUXVlcnlGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGVzUXVlcnkgPSBudWxsO1xuXG4gIGNvbnN0IG5vZGVzUXVlcnlOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0Tm9kZXNRdWVyeU5vZGUoKTtcblxuICBpZiAobm9kZXNRdWVyeU5vZGUgIT09IG51bGwpIHtcbiAgICBub2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeUZyb21Ob2Rlc1F1ZXJ5Tm9kZShub2Rlc1F1ZXJ5Tm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbm9kZXNRdWVyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJpZ2h0VGVybUZyb21Mb2dpY2FsVGVybU5vZGUobG9naWNhbFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJpZ2h0VGVybU5vZGUgPSBsb2dpY2FsVGVybU5vZGUuZ2V0UmlnaHRUZXJtTm9kZSgpLFxuICAgICAgIHJpZ2h0VGVybSA9IHRlcm1Gcm9tVGVybU5vZGUocmlnaHRUZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJpZ2h0VGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZWRGcm9tQ29tcGFyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBuZWdhdGVkID0gY29tcGFyaXNvblRlcm1Ob2RlLmlzTmVnYXRlZCgpO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWxzZUV4cHJlc3Npb25Gcm9tVGVybmFyeU5vZGUodGVybmFyeU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZWxzZUV4cHJlc3Npb25Ob2RlID0gdGVybmFyeU5vZGUuZ2V0RWxzZUV4cHJlc3Npb25Ob2RlKCksXG4gICAgICAgIGVsc2VFeHByZXNzaW9uID0gZXhwcmVzc2lvbkZyb21FeHByZXNzaW9uTm9kZShlbHNlRXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBlbHNlRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldHVybkJsb2NrRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCByZXR1cm5CbG9jayA9IG51bGw7XG5cbiAgY29uc3QgcmV0dXJuQmxvY2tOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0UmV0dXJuQmxvY2tOb2RlKCk7XG5cbiAgaWYgKHJldHVybkJsb2NrTm9kZSAhPT0gbnVsbCkge1xuICAgIHJldHVybkJsb2NrID0gcmV0dXJuQmxvY2tGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcmV0dXJuQmxvY2s7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tU29tZU5vZGUoc29tZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYW5vbnltb3VzUHJvY2VkdXJlTm9kZSA9IHNvbWVOb2RlLmdldEFub255bW91c1Byb2NlZHVyZU5vZGUoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlID0gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGFub255bW91c1Byb2NlZHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbnNlbnNpY2FsRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgbm9uc2Vuc2ljYWwgPSByZXR1cm5CbG9ja05vZGUuaXNOb25zZW5zaWNhbCgpO1xuXG4gIHJldHVybiBub25zZW5zaWNhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZUZyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCByZWZlcmVuY2VOb2RlID0gcHJvY2VkdXJlQ2FsbE5vZGUuZ2V0UmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tUmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVmdFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlKGNvbXBhcmlzb25UZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsZWZ0VGVybU5vZGUgPSBjb21wYXJpc29uVGVybU5vZGUuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgIGxlZnRUZXJtID0gdGVybUZyb21UZXJtTm9kZShsZWZ0VGVybU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBsZWZ0VGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc2p1bmN0aW9uRnJvbUxvZ2ljYWxUZXJtTm9kZShsb2dpY2FsVGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZGlzanVuY3Rpb24gPSBsb2dpY2FsVGVybU5vZGUuaXNEaXNqdW5jdGlvbigpO1xuXG4gIHJldHVybiBkaXNqdW5jdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOb2RlID0gYW5vbnltb3VzUHJvY2VkdXJlTm9kZS5nZXRUeXBlTm9kZSgpLFxuICAgICAgICB0eXBlID0gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUFzc2lnbm1lbnRzRnJvbVN0ZXBOb2RlKHN0ZXBOb2RlLCBjb250ZXh0KSB7XG4gIGxldCB2YXJpYWJsZUFzc2lnbm1lbnRzID0gbnVsbDtcblxuICBjb25zdCB2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZSA9IHN0ZXBOb2RlLmdldFZhcmlhYmxlQXNzaWdubWVudHNOb2RlKCk7XG5cbiAgaWYgKHZhcmlhYmxlQXNzaWdubWVudHNOb2RlICE9PSBudWxsKSB7XG4gICAgdmFyaWFibGVBc3NpZ25tZW50cyA9IHZhcmlhYmxlQXNzaWdubWVudHNGcm9tVmFyaWFibGVBc3NpZ25tZW50c05vZGUodmFyaWFibGVBc3NpZ25tZW50c05vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHZhcmlhYmxlQXNzaWdubWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbm9ueW1vdXNQcm9jZWR1cmVGcm9tRXZlcnlOb2RlKGV2ZXJ5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlID0gZXZlcnlOb2RlLmdldEFub255bW91c1Byb2NlZHVyZU5vZGUoKSxcbiAgICAgICAgYW5vbnltb3VzUHJvY2VkdXJlID0gYW5vbnltb3VzUHJvY2VkdXJlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUoYW5vbnltb3VzUHJvY2VkdXJlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGFub255bW91c1Byb2NlZHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxGcm9tRXhwcmVzc2lvbk5vZGUoZXhwcmVzc2lvbk5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHByb2NlZHVyZUNhbGwgPSBudWxsO1xuXG4gIGNvbnN0IHByb2NlZHVyZUNhbGxOb2RlID0gZXhwcmVzc2lvbk5vZGUuZ2V0UHJvY2VkdXJlQ2FsbE5vZGUoKTtcblxuICBpZiAocHJvY2VkdXJlQ2FsbE5vZGUgIT09IG51bGwpIHtcbiAgICBwcm9jZWR1cmVDYWxsID0gcHJvY2VkdXJlQ2FsbEZyb21Qcm9jZWR1cmVDYWxsTm9kZShwcm9jZWR1cmVDYWxsTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJpZ2h0VGVybUZyb21Db21wenJpc29uVGVybU5vZGUoY29tcGFyaXNvblRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJpZ2h0VGVybU5vZGUgPSBjb21wYXJpc29uVGVybU5vZGUuZ2V0UmlnaHRUZXJtTm9kZSgpLFxuICAgICAgICByaWdodFRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHJpZ2h0VGVybU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiByaWdodFRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVOb2RlID0gYXJyYXlBc3NpZ25tZW50Tm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kaW5nc0Zyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYmluZGluZ3NOb2RlID0gYXJyYXlBc3NpZ25tZW50Tm9kZS5nZXRCaW5kaW5nc05vZGUoKSxcbiAgICAgICAgYmluZGluZ3MgPSBiaW5kaW5nc0Zyb21CaW5kaW5nc05vZGUoYmluZGluZ3NOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gYmluZGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbVZhcmlhYmxlQXNzaWdubWVudHNOb2RlKHZhcmlhYmxlQXNzaWdubWVudHNOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOb2RlID0gdmFyaWFibGVBc3NpZ25tZW50c05vZGUuZ2V0VHlwZU5vZGUoKSxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5vbnltb3VzUHJvY2VkdXJlRnJvbVJlZHVjZU5vZGUocmVkdWNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBhbm9ueW1vdXNQcm9jZWR1cmVOb2RlID0gcmVkdWNlTm9kZS5nZXRBbm9ueW1vdXNQcm9jZWR1cmVOb2RlKCksXG4gICAgICAgIGFub255bW91c1Byb2NlZHVyZSA9IGFub255bW91c1Byb2NlZHVyZUZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBhbm9ueW1vdXNQcm9jZWR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZUZyb21PYmplY3RBc3NpZ25tZW50Tm9kZShvYmplY3RBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSBvYmplY3RBc3NpZ25tZW50Tm9kZS5nZXRWYXJpYWJsZU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZU5vZGUgPSBwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUuZ2V0VHlwZU5vZGUoKSxcbiAgICAgICAgdHlwZSA9IHR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxGcm9tUHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlKHByb2NlZHVyZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBsYWJlbE5vZGUgPSBwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUuZ2V0TGFiZWxOb2RlKCksXG4gICAgICAgIGxhYmVsID0gbGFiZWxGcm9tTGFiZWxOb2RlKGxhYmVsTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuU3RhdGVtZW50RnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmV0dXJuU3RhdGVtZW50Tm9kZSA9IHJldHVybkJsb2NrTm9kZS5nZXRSZXR1cm5TdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHJldHVyblN0YXRlbWVudCA9IHJldHVyblN0YXRlbWVudEZyb21SZXR1cm5TdGF0ZW1lbnROb2RlKHJldHVyblN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiByZXR1cm5TdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHByZXNzaW9uRnJvbVZhcmlhYmxlQXNzaWdubWVudE5vZGUodmFyaWFibGVBc3NpZ21lbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGV4cHJlc3Npb25Ob2RlID0gdmFyaWFibGVBc3NpZ21lbnROb2RlLmdldEV4cHJlc3Npb25Ob2RlKCksXG4gICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uRnJvbUV4cHJlc3Npb25Ob2RlKGV4cHJlc3Npb25Ob2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gZXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNOb2RlID0gYW5vbnltb3VzUHJvY2VkdXJlTm9kZS5nZXRQYXJhbWV0ZXJzTm9kZSgpLFxuICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21QYXJhbWV0ZXJzTm9kZShwYXJhbWV0ZXJzTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXR1cm5CbG9ja0Zyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmV0dXJuQmxvY2tOb2RlID0gYW5vbnltb3VzUHJvY2VkdXJlTm9kZS5nZXRSZXR1cm5CbG9ja05vZGUoKSxcbiAgICAgICAgcmV0dXJuQmxvY2sgPSByZXR1cm5CbG9ja0Zyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcmV0dXJuQmxvY2s7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZShwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcGFyYW1ldGVyc05vZGUgPSBwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUuZ2V0UGFyYW1ldGVyc05vZGUoKSxcbiAgICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNGcm9tUGFyYW1ldGVyc05vZGUocGFyYW1ldGVyc05vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuQmxvY2tGcm9tUHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlKHByb2NlZHVyZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCByZXR1cm5CbG9ja05vZGUgPSBwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUuZ2V0UmV0dXJuQmxvY2tOb2RlKCksXG4gICAgICAgIHJldHVybkJsb2NrID0gcmV0dXJuQmxvY2tGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJldHVybkJsb2NrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudE5vZGUodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZUFzc2lnbm1lbnROb2RlLmdldFZhcmlhYmxlTm9kZSgpLFxuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlRnJvbVR5cGVBbmRWYXJpYWJsZU5vZGUodHlwZSwgdmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc0FycmF5RnJvbVRlcm1Ob2Rlcyh0ZXJtTm9kZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybXNBcnJheSA9IHRlcm1Ob2Rlcy5tYXAoKHRlcm1Ob2RlKSA9PiB7IC8vL1xuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9KTtcblxuICByZXR1cm4gdGVybXNBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc0FycmF5RnJvbVZhbHVlTm9kZXModmFsdWVOb2RlcywgY29udGV4dCkge1xuICBjb25zdCB2YWx1ZXNBcnJheSA9IHZhbHVlTm9kZXMubWFwKCh2YWx1ZU5vZGUpID0+IHsgLy8vXG4gICAgY29uc3QgdmFsdWUgPSB2YWx1ZUZyb21WYWx1ZU5vZGUodmFsdWVOb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhbHVlc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZ3NBcnJheUZyb21CaW5kaW5nc05vZGUoYmluZGluZ3NOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGJpbmRpbmdOb2RlcyA9IGJpbmRpbmdzTm9kZS5nZXRCaW5kaW5nTm9kZXMoKSxcbiAgICAgICAgYmluZGluZ3NBcnJheSA9IGJpbmRpbmdOb2Rlcy5tYXAoKGJpbmRpbmdOb2RlKSA9PiB7IC8vL1xuICAgICAgICAgIGNvbnN0IGJpbmRpbmcgPSBiaW5kaW5nRnJvbUJpbmRpbmdOb2RlKGJpbmRpbmdOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBiaW5kaW5nO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gYmluZGluZ3NBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNBcnJheUZyb21QYXJhbWV0ZXJzTm9kZShwYXJhbWV0ZXJzTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBwYXJhbWV0ZXJOb2RlcyA9IHBhcmFtZXRlcnNOb2RlLmdldFBhcmFtZXRlck5vZGVzKCksXG4gICAgICAgIHBhcmFtZXRlcnNBcnJheSA9IHBhcmFtZXRlck5vZGVzLm1hcCgocGFyYW1ldGVyTm9kZSkgPT4geyAvLy9cbiAgICAgICAgICBjb25zdCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJGcm9tUGFyYW1ldGVyTm9kZShwYXJhbWV0ZXJOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzQXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lZFBhcmFtZXRlcnNBcnJheUZyb21OYW1lZEJpbmRpbmdOb2RlcyhuYW1lZEJpbmRpbmdOb2RlcywgY29udGV4dCkge1xuICBjb25zdCBuYW1lZFBhcmFtZXRlcnNBcnJheSA9IG5hbWVkQmluZGluZ05vZGVzLm1hcCgobmFtZWRCaW5kaW5nTm9kZSkgPT4geyAvLy9cbiAgICBjb25zdCBuYW1lZEJpbmRpbmcgPSBuYW1lZEJpbmRpbmdGcm9tTmFtZWRCaW5kaW5nTm9kZShuYW1lZEJpbmRpbmdOb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBuYW1lZEJpbmRpbmc7XG4gIH0pO1xuXG4gIHJldHVybiBuYW1lZFBhcmFtZXRlcnNBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudHNBcnJheUZyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50c05vZGUodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50c05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50Tm9kZXMgPSB2YXJpYWJsZUFzc2lnbm1lbnRzTm9kZS5nZXRWYXJpYWJsZUFzc2lnbm1lbnROb2RlcygpLFxuICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXkgPSB2YXJpYWJsZUFzc2lnbm1lbnROb2Rlcy5tYXAoKHZhcmlhYmxlQXNzaWdubWVudE5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCB2YXJpYWJsZUFzc2lnbm1lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudE5vZGUodHlwZSwgdmFyaWFibGVBc3NpZ25tZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50O1xuICAgICAgICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVBc3NpZ25tZW50c0FycmF5O1xufVxuIl0sIm5hbWVzIjpbImFsaWFzRnJvbU5hbWVkQmluZGluZ05vZGUiLCJhbm9ueW1vdXNQcm9jZWR1cmVGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsImFub255bW91c1Byb2NlZHVyZUZyb21FdmVyeU5vZGUiLCJhbm9ueW1vdXNQcm9jZWR1cmVGcm9tUmVkdWNlTm9kZSIsImFub255bW91c1Byb2NlZHVyZUZyb21Tb21lTm9kZSIsImFyZ3VtZW50VHlwZUZyb21UeXBlTm9kZSIsImFycmF5QXNzaWdubWVudEZyb21BcnJheUFzc2lnbm1lbnROb2RlIiwiYXJyYXlBc3NpZ25tZW50RnJvbVN0ZXBOb2RlIiwiYmluZGluZ0Zyb21CaW5kaW5nTm9kZSIsImJpbmRpbmdzQXJyYXlGcm9tQmluZGluZ3NOb2RlIiwiYmluZGluZ3NGcm9tQXJyYXlBc3NpZ25tZW50Tm9kZSIsImJpbmRpbmdzRnJvbUJpbmRpbmdzTm9kZSIsImJyYWNrZXRlZFRlcm1Gcm9tQnJhY2tldGVkVGVybU5vZGUiLCJicmFja2V0ZWRUZXJtRnJvbVRlcm1Ob2RlIiwiY29tcGFyaXNvblRlcm1Gcm9tQ29tcGFyaXNvblRlcm1Ob2RlIiwiY29tcGFyaXNvblRlcm1Gcm9tVGVybU5vZGUiLCJkaXNqdW5jdGlvbkZyb21Mb2dpY2FsVGVybU5vZGUiLCJlbGlkZWRGcm9tQmluZGluZ05vZGUiLCJlbHNlRXhwcmVzc2lvbkZyb21UZXJuYXJ5Tm9kZSIsImVycm9yRnJvbUVycm9yTm9kZSIsImV2ZXJ5RnJvbUV2ZXJ5Tm9kZSIsImV2ZXJ5RnJvbUV4cHJlc3Npb25Ob2RlIiwiZXhwcmVzc2lvbkZyb21FeHByZXNzaW9uTm9kZSIsImV4cHJlc3Npb25Gcm9tVmFyaWFibGVBc3NpZ25tZW50Tm9kZSIsImV4cHJlc3Npb25Gcm9tVmFyaWFibGVOb2RlIiwiaWZFeHByZXNzaW9uRnJvbVRlcm5hcnlOb2RlIiwiaW5pdGlhbFZhbHVlRnJvbVJlZHVjZU5vZGUiLCJsYWJlbEZyb21MYWJlbE5vZGUiLCJsYWJlbEZyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUiLCJsZWZ0VGVybUZyb21Db21wenJpc29uVGVybU5vZGUiLCJsZWZ0VGVybUZyb21Mb2dpY2FsVGVybU5vZGUiLCJsb2dpY2FsVGVybUZyb21Mb2dpY2FsVGVybU5vZGUiLCJsb2dpY2FsVGVybUZyb21UZXJtTm9kZSIsIm5hbWVGcm9tQmluZGluZ05vZGUiLCJuYW1lRnJvbUxhYmVsTm9kZSIsIm5hbWVGcm9tTmFtZWRCaW5kaW5nTm9kZSIsIm5hbWVGcm9tUGFyYW5ldGVyTm9kZSIsIm5hbWVGcm9tUmVmZXJlbmNlTm9kZSIsIm5hbWVGcm9tVHlwZU5vZGUiLCJuYW1lRnJvbVZhcmlhYmxlTm9kZSIsIm5hbWVkQmluZGluZ0Zyb21OYW1lZEJpbmRpbmdOb2RlIiwibmFtZWRCaW5kaW5nc0Zyb21OYW1lZEJpbmRpbmdzTm9kZSIsIm5hbWVkQmluZGluZ3NGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUiLCJuYW1lZFBhcmFtZXRlcnNBcnJheUZyb21OYW1lZEJpbmRpbmdOb2RlcyIsIm5lZ2F0ZWRGcm9tQ29tcGFyaXNvblRlcm1Ob2RlIiwibmVnYXRlZFRlcm1Gcm9tTmVnYXRlZFRlcm1Ob2RlIiwibmVnYXRlZFRlcm1Gcm9tVGVybU5vZGUiLCJub2RlUXVlcnlGcm9tRXhwcmVzc2lvbk5vZGUiLCJub2RlUXVlcnlGcm9tTm9kZVF1ZXJ5Tm9kZSIsIm5vZGVzUXVlcnlGcm9tRXhwcmVzc2lvbk5vZGUiLCJub2Rlc1F1ZXJ5RnJvbU5vZGVzUXVlcnlOb2RlIiwibm9uc2Vuc2ljYWxGcm9tUmV0dXJuQmxvY2tOb2RlIiwib2JqZWN0QXNzaWdubWVudEZyb21PYmplY3RBc3NpZ25tZW50Tm9kZSIsIm9iamVjdEFzc2lnbm1lbnRGcm9tU3RlcE5vZGUiLCJwYXJhbWV0ZXJGcm9tUGFyYW1ldGVyTm9kZSIsInBhcmFtZXRlcnNBcnJheUZyb21QYXJhbWV0ZXJzTm9kZSIsInBhcmFtZXRlcnNGcm9tQW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsInBhcmFtZXRlcnNGcm9tUGFyYW1ldGVyc05vZGUiLCJwYXJhbWV0ZXJzRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZSIsInByaW1pdGl2ZUZyb21QcmltaXRpdmVOb2RlIiwicHJpbWl0aXZlRnJvbVRlcm1Ob2RlIiwicHJpbWl0aXZlRnJvbVZhbHVlTm9kZSIsInByb2NlZHVyZUNhbGxGcm9tRXhwcmVzc2lvbk5vZGUiLCJwcm9jZWR1cmVDYWxsRnJvbVByb2NlZHVyZUNhbGxOb2RlIiwicHJvY2VkdXJlRGVjbGFyYXRpb25Gcm9tUHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlIiwicHJvY2VkdXJlRnJvbVByb2NlZHVyZURlY2xhcmF0aW9uTm9kZSIsInF1ZXJ5RnJvbU5vZGVRdWVyeU5vZGUiLCJxdWVyeUZyb21Ob2Rlc1F1ZXJ5Tm9kZSIsInJlZHVjZUZyb21FeHByZXNzaW9uTm9kZSIsInJlZHVjZUZyb21SZWR1Y2VOb2RlIiwicmVmZXJlbmNlRnJvbVByb2NlZHVyZUNhbGxOb2RlIiwicmVmZXJlbmNlRnJvbVJlZmVyZW5jZU5vZGUiLCJyZXR1cm5CbG9ja0Zyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlIiwicmV0dXJuQmxvY2tGcm9tRXhwcmVzc2lvbk5vZGUiLCJyZXR1cm5CbG9ja0Zyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUiLCJyZXR1cm5CbG9ja0Zyb21SZXR1cm5CbG9ja05vZGUiLCJyZXR1cm5TdGF0ZW1lbnRGcm9tUmV0dXJuQmxvY2tOb2RlIiwicmV0dXJuU3RhdGVtZW50RnJvbVJldHVyblN0YXRlbWVudE5vZGUiLCJyaWdodFRlcm1Gcm9tQ29tcHpyaXNvblRlcm1Ob2RlIiwicmlnaHRUZXJtRnJvbUxvZ2ljYWxUZXJtTm9kZSIsInNvbWVGcm9tRXhwcmVzc2lvbk5vZGUiLCJzb21lRnJvbVNvbWVOb2RlIiwic3RlcEZyb21TdGVwTm9kZSIsInN0ZXBzRnJvbVJldHVybkJsb2NrTm9kZSIsInRlcm1Gcm9tQnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtRnJvbUV4cHJlc3Npb25Ob2RlIiwidGVybUZyb21OZWdhdGVkVGVybU5vZGUiLCJ0ZXJtRnJvbVRlcm1Ob2RlIiwidGVybUZyb21UZXJuYXJ5Tm9kZSIsInRlcm1zQXJyYXlGcm9tVGVybU5vZGVzIiwidGVybXNGcm9tVGVybXNOb2RlIiwidGVybmFyeUZyb21FeHByZXNzaW9uTm9kZSIsInRlcm5hcnlGcm9tVGVybmFyeU5vZGUiLCJ0eXBlRnJvbUFub255bW91c1Byb2NlZHVyZU5vZGUiLCJ0eXBlRnJvbUJpbmRpbmdOb2RlIiwidHlwZUZyb21Mb2dpY2FsVGVybU5vZGUiLCJ0eXBlRnJvbU5hbWVkQmluZGluZ05vZGUiLCJ0eXBlRnJvbU5lZ2F0ZWRUZXJtTm9kZSIsInR5cGVGcm9tUGFyYW5ldGVyTm9kZSIsInR5cGVGcm9tUHJpbWl0aXZlTm9kZSIsInR5cGVGcm9tUHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlIiwidHlwZUZyb21UeXBlTm9kZSIsInR5cGVGcm9tVmFyaWFibGVBc3NpZ25tZW50c05vZGUiLCJ0eXBlRnJvbVZhcmlhYmxlTm9kZSIsInZhbHVlRnJvbVByaW1pdGl2ZU5vZGUiLCJ2YWx1ZUZyb21SZWR1Y2VOb2RlIiwidmFsdWVGcm9tUmV0dXJuU3RhdGVtZW50Tm9kZSIsInZhbHVlRnJvbVR5cGVBbmRWYXJpYWJsZU5vZGUiLCJ2YWx1ZUZyb21WYWx1ZU5vZGUiLCJ2YWx1ZXNBcnJheUZyb21WYWx1ZU5vZGVzIiwidmFsdWVzRnJvbVByb2NlZHVyZUNhbGxOb2RlIiwidmFsdWVzRnJvbVZhbHVlc05vZGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudE5vZGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnRzQXJyYXlGcm9tVHlwZUFuZFZhcmlhYmxlQXNzaWdubWVudHNOb2RlIiwidmFyaWFibGVBc3NpZ25tZW50c0Zyb21TdGVwTm9kZSIsInZhcmlhYmxlQXNzaWdubWVudHNGcm9tVmFyaWFibGVBc3NpZ25tZW50c05vZGUiLCJ2YXJpYWJsZUZyb21BcnJheUFzc2lnbm1lbnROb2RlIiwidmFyaWFibGVGcm9tRXZlcnlOb2RlIiwidmFyaWFibGVGcm9tTm9kZVF1ZXJ5Tm9kZSIsInZhcmlhYmxlRnJvbU5vZGVzUXVlcnlOb2RlIiwidmFyaWFibGVGcm9tT2JqZWN0QXNzaWdubWVudE5vZGUiLCJ2YXJpYWJsZUZyb21SZWR1Y2VOb2RlIiwidmFyaWFibGVGcm9tU29tZU5vZGUiLCJ2YXJpYWJsZUZyb21UZXJtTm9kZSIsInZhcmlhYmxlRnJvbVR5cGVBbmRWYXJpYWJsZUFzc2lnbm1lbnROb2RlIiwidmFyaWFibGVGcm9tVHlwZUFuZFZhcmlhYmxlTm9kZSIsInZhcmlhYmxlRnJvbVZhbHVlTm9kZSIsInZhcmlhYmxlRnJvbVZhcmlhYmxlTm9kZSIsInN0ZXBOb2RlIiwiY29udGV4dCIsIlN0ZXAiLCJlbGVtZW50cyIsIm5vZGUiLCJzdHJpbmciLCJub2RlQXNTdHJpbmciLCJicmVha1BvaW50IiwiYXJyYXlBc3NpZ25tZW50Iiwib2JqZWN0QXNzaWdtZW50IiwidmFyaWFibGVBc3NpZ21lbnRzIiwic3RlcCIsInNvbWVOb2RlIiwiU29tZSIsInZhcmlhYmxlIiwiYW5vbnltb3VzUHJvY2VkdXJlIiwic29tZVN0cmluZyIsInNvbWVTdHJpbmdGcm9tVmFyaWFibGVBbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJzb21lIiwidGVybU5vZGUiLCJUZXJtIiwicHJpbWl0aXZlIiwibmVnYXRlZFRlcm0iLCJsb2dpY2FsVGVybSIsImJyYWNrZXRlZFRlcm0iLCJjb21wYXJpc29uVGVybSIsInByb3BlcnRpZXMiLCJ0ZXJtU3RyaW5nIiwidGVybVN0cmluZ0Zyb21Qcm9wZXJ0aWVzIiwidGVybSIsInR5cGVOb2RlIiwiVHlwZSIsIm5hbWUiLCJhcmd1bWVudFR5cGUiLCJ0eXBlIiwidmFsdWVOb2RlIiwiVmFsdWUiLCJ2YWx1ZVN0cmluZyIsInZhbHVlU3RyaW5nRnJvbVByb3BlcnRpZXMiLCJ2YWx1ZSIsInRlcm1zTm9kZSIsIlRlcm1zIiwidGVybU5vZGVzIiwiZ2V0VGVybU5vZGVzIiwidGVybXNBcnJheSIsImFycmF5IiwidGVybXMiLCJlcnJvck5vZGUiLCJFcnJvciIsImVycm9yIiwiZXZlcnlOb2RlIiwiRXZlcnkiLCJldmVyeVN0cmluZyIsImV2ZXJ5U3RyaW5nRnJvbVZhcmlhYmxlQW5kQW5vbnltb3VzUHJvY2VkdXJlIiwiZXZlcnkiLCJsYWJlbE5vZGUiLCJMYWJlbCIsImxhYmVsIiwidmFsdWVzTm9kZSIsIlZhbHVlcyIsInZhbHVlTm9kZXMiLCJnZXRWYWx1ZU5vZGVzIiwidmFsdWVzQXJyYXkiLCJ2YWx1ZXMiLCJyZWR1Y2VOb2RlIiwiUmVkdWNlIiwiaW5pdGlhbFZhbHVlIiwicmVkdWNlU3RyaW5nIiwicmVkdWNlU3RyaW5nRnJvbVZhcmlhYmxlSW5pdGlhbEV4cHJlc3Npb25BbmRBbm9ueW1vdXNQcm9jZWR1cmUiLCJyZWR1Y2UiLCJiaW5kaW5nTm9kZSIsIkJpbmRpbmciLCJlbGlkZWQiLCJiaW5kaW5nIiwidGVybmFyeU5vZGUiLCJUZXJuYXJ5IiwiaWZFeHByZXNzaW9uIiwiZWxzZUV4cHJlc3Npb24iLCJ0ZXJuYXJ5U3RyaW5nIiwidGVybmFyeVN0cmluZ0Zyb21UZXJtIiwidGVybmFyeSIsInZhcmlhYmxlTm9kZSIsIlZhcmlhYmxlIiwiZXhwcmVzc2lvbiIsImJpbmRpbmdzTm9kZSIsIkJpbmRpbmdzIiwiYmluZGluZ3NBcnJheSIsImJpbmRpbmdzIiwicmVmZXJlbmNlTm9kZSIsIlJlZmVyZW5jZSIsInJlZmVyZW5jZSIsInBhcmFtZXRlck5vZGUiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXIiLCJub2RlUXVlcnlOb2RlIiwiTm9kZVF1ZXJ5IiwicXVlcnkiLCJub2RlUXVlcnkiLCJwcmltaXRpdmVOb2RlIiwiUHJpbWl0aXZlIiwibm9kZXNRdWVyeU5vZGUiLCJOb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsInBhcmFtZXRlcnNOb2RlIiwiUGFyYW1ldGVycyIsInBhcmFtZXRlcnNBcnJheSIsInBhcmFtZXRlcnMiLCJleHByZXNzaW9uTm9kZSIsIkV4cHJlc3Npb24iLCJyZXR1cm5CbG9jayIsInByb2NlZHVyZUNhbGwiLCJleHByZXNzaW9uU3RyaW5nIiwiZXhwcmVzc2lvblN0cmluZ0Zyb21Qcm9wZXJ0aWVzIiwicmV0dXJuQmxvY2tOb2RlIiwiUmV0dXJuQmxvY2siLCJzdGVwcyIsIm5vbnNlbnNpY2FsIiwicmV0dXJuU3RhdGVtZW50IiwicmV0dXJuQmxvY2tTdHJpbmciLCJyZXR1cm5CbG9ja1N0cmluZ0Zyb21SZXR1cm5TdGF0ZW1lbnROb2RlIiwibmVnYXRlZFRlcm1Ob2RlIiwiTmVnYXRlZFRlcm0iLCJnZXRUZXJtTm9kZSIsImxvZ2ljYWxUZXJtTm9kZSIsIkxvZ2ljYWxUZXJtIiwiZGlzanVuY3Rpb24iLCJsZWZ0VGVybSIsInJpZ2h0VGVybSIsIm5hbWVkQmluZGluZ05vZGUiLCJOYW1lZEJpbmRpbmciLCJhbGlhcyIsIm5hbWVkQmluZGluZyIsIm5hbWVkQmluZGluZ3NOb2RlIiwiTmFtZWRCaW5kaW5ncyIsIm5hbWVkQmluZGluZ05vZGVzIiwiZ2V0TmFtZWRCaW5kaW5nTm9kZXMiLCJuYW1lZEJpbmRpbmdzQXJyYXkiLCJuYW1lZEJpbmRpbmdzIiwiYnJhY2tldGVkVGVybU5vZGUiLCJCcmFja2V0ZWRUZXJtIiwicHJvY2VkdXJlQ2FsbE5vZGUiLCJQcm9jZWR1cmVDYWxsIiwiY29tcGFyaXNvblRlcm1Ob2RlIiwiQ29tcGFyaXNvblRlcm0iLCJuZWdhdGVkIiwib2JqZWN0QXNzaWdubWVudE5vZGUiLCJnZXROYW1lZEJpbmRpbmdzTm9kZSIsInByb2NlZHVyZURlY2xhcmF0aW9uTm9kZSIsIlByb2NlZHVyZSIsInByb2NlZHVyZVN0cmluZyIsInByb2NlZHVyZVN0cmluZ0Zyb21UeXBlTGFiZWxQYXJhbWV0ZXJzQW5kUmV0dXJuQmxvY2siLCJwcm9jZWR1cmUiLCJhcnJheUFzc2lnbm1lbnROb2RlIiwiQXJyYXlBc3NpZ25tZW50IiwicmV0dXJuU3RhdGVtZW50Tm9kZSIsIlJldHVyblN0YXRlbWVudCIsIk9iamVjdEFzc2lnbWVudCIsIm9iamVjdEFzc2lnbm1lbnQiLCJhbm9ueW1vdXNQcm9jZWR1cmVOb2RlIiwiQW5vbnltb3VzUHJvY2VkdXJlIiwibm9ueW1vdXNQcm9jZWR1cmVTdHJpbmciLCJhbm9ueW1vdXNQcm9jZWR1cmVTdHJpbmdGcm9tVHlwZVBhcmFtZXRlcnNBbmRSZXR1cm5CbG9jayIsInZhcmlhYmxlQXNzaWdubWVudHNOb2RlIiwiVmFyaWFibGVBc3NpZ25tZW50cyIsInZhcmlhYmxlQXNzaWdubWVudHNBcnJheSIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZyIsInZhcmlhYmxlQXNzaWdubWVudFN0cmluZ0Zyb21UeXBlQW5kVmFyaWFibGVBc3NpZ25tZW50c0FycmF5IiwidmFyaWFibGVBc3NpZ25tZW50cyIsIlByb2NlZHVyZURlY2xhcmF0aW9uIiwicHJvY2VkdXJlRGVjbGFyYXRpb25TdHJpbmciLCJwcm9jZWR1cmVEZWNsYXJhdGlvblN0cmluZ0Zyb21Qcm9jZWR1cmUiLCJwcm9jZWR1cmVEZWNsYXJhdGlvbiIsInZhcmlhYmxlQXNzaWdubWVudE5vZGUiLCJWYXJpYWJsZUFzc2lnbm1lbnQiLCJ2YXJpYWJsZUFzc2lnbm1lbnRTdHJpbmdGcm9tVHlwZUFuZFZhcmlhYmxlIiwiYXNzaWdubWVudCIsInZhcmlhYmxlU3RyaW5nIiwidmFyaWFibGVTdHJpbmdGcm9tTmFtZSIsImdldE5hbWUiLCJnZXRWYWx1ZU5vZGUiLCJnZXRUeXBlTm9kZSIsImdldFZhcmlhYmxlTm9kZSIsImdldFByaW1pdGl2ZU5vZGUiLCJpc0VsaWRlZCIsInR5cGVOYW1lIiwiZ2V0VHlwZU5hbWUiLCJmcm9tVHlwZU5hbWUiLCJnZXRTb21lTm9kZSIsImdldFN0cmluZyIsIlF1ZXJ5IiwiZnJvbUV4cHJlc3Npb25TdHJpbmciLCJnZXRWYWx1ZSIsImdldEV2ZXJ5Tm9kZSIsImdldE5lZ2F0ZWRUZXJtTm9kZSIsImdldExvZ2ljYWxUZXJtTm9kZSIsIkJPT0xFQU5fVFlQRV9OQU1FIiwiYXJndW1lbnRUeXBlTmFtZSIsImdldEFyZ3VtZW50VHlwZU5hbWUiLCJnZXRSZWR1Y2VOb2RlIiwic3RlcE5vZGVzIiwiZ2V0U3RlcE5vZGVzIiwibWFwIiwiZ2V0QWxpYXMiLCJnZXRUZXJuYXJ5Tm9kZSIsImdldEJyYWNrZXRlZFRlcm1Ob2RlIiwidGVybU5PZGUiLCJnZXRDb21wYXJpc29uVGVybU5vZGUiLCJnZXRBcnJheUFzc2lnbm1lbnROb2RlIiwiaWZFeHByZXNzaW9uTm9kZSIsImdldElmRXhwcmVzc2lvbk5vZGUiLCJnZXROb2RlUXVlcnlOb2RlIiwibGVmdFRlcm1Ob2RlIiwiZ2V0TGVmdFRlcm1Ob2RlIiwiZ2V0VmFsdWVzTm9kZSIsImdldE9iamVjdEFzc2lnbm1lbnROb2RlIiwiZ2V0Tm9kZXNRdWVyeU5vZGUiLCJyaWdodFRlcm1Ob2RlIiwiZ2V0UmlnaHRUZXJtTm9kZSIsImlzTmVnYXRlZCIsImVsc2VFeHByZXNzaW9uTm9kZSIsImdldEVsc2VFeHByZXNzaW9uTm9kZSIsImdldFJldHVybkJsb2NrTm9kZSIsImdldEFub255bW91c1Byb2NlZHVyZU5vZGUiLCJpc05vbnNlbnNpY2FsIiwiZ2V0UmVmZXJlbmNlTm9kZSIsImlzRGlzanVuY3Rpb24iLCJnZXRWYXJpYWJsZUFzc2lnbm1lbnRzTm9kZSIsImdldFByb2NlZHVyZUNhbGxOb2RlIiwiZ2V0QmluZGluZ3NOb2RlIiwiZ2V0TGFiZWxOb2RlIiwiZ2V0UmV0dXJuU3RhdGVtZW50Tm9kZSIsInZhcmlhYmxlQXNzaWdtZW50Tm9kZSIsImdldEV4cHJlc3Npb25Ob2RlIiwiZ2V0UGFyYW1ldGVyc05vZGUiLCJiaW5kaW5nTm9kZXMiLCJnZXRCaW5kaW5nTm9kZXMiLCJwYXJhbWV0ZXJOb2RlcyIsImdldFBhcmFtZXRlck5vZGVzIiwibmFtZWRQYXJhbWV0ZXJzQXJyYXkiLCJ2YXJpYWJsZUFzc2lnbm1lbnROb2RlcyIsImdldFZhcmlhYmxlQXNzaWdubWVudE5v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
|
|
@@ -12,18 +12,17 @@ _export(exports, {
|
|
|
12
12
|
get primitiveFromBoolean () {
|
|
13
13
|
return primitiveFromBoolean;
|
|
14
14
|
},
|
|
15
|
-
get primitiveFromList () {
|
|
16
|
-
return primitiveFromList;
|
|
17
|
-
},
|
|
18
15
|
get primitiveFromNominalValue () {
|
|
19
16
|
return primitiveFromNominalValue;
|
|
20
17
|
},
|
|
18
|
+
get primitiveFromNominalValues () {
|
|
19
|
+
return primitiveFromNominalValues;
|
|
20
|
+
},
|
|
21
21
|
get primitiveFromStringLiteral () {
|
|
22
22
|
return primitiveFromStringLiteral;
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
25
|
const _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
|
|
26
|
-
const _element = require("../utilities/element");
|
|
27
26
|
const _typeNames = require("../typeNames");
|
|
28
27
|
const _string = require("../utilities/string");
|
|
29
28
|
function _interop_require_default(obj) {
|
|
@@ -31,12 +30,6 @@ function _interop_require_default(obj) {
|
|
|
31
30
|
default: obj
|
|
32
31
|
};
|
|
33
32
|
}
|
|
34
|
-
function primitiveFromList(list, context) {
|
|
35
|
-
const { Type, Primitive } = _elements.default, primitiveString = (0, _string.primtiveStringFromNominalValues)(list), string = primitiveString, typeName = _typeNames.LIST_TYPE_NAME, type = Type.fromTypeName(typeName, context), value = list, node = null, breakPoint = null;
|
|
36
|
-
context = null;
|
|
37
|
-
const primitive = new Primitive(context, string, node, breakPoint, type, value);
|
|
38
|
-
return primitive;
|
|
39
|
-
}
|
|
40
33
|
function primitiveFromBoolean(boolean, context) {
|
|
41
34
|
const { Type, Primitive } = _elements.default, primitiveString = (0, _string.primtiveStringFromBoolean)(boolean), string = primitiveString, typeName = _typeNames.BOOLEAN_TYPE_NAME, type = Type.fromTypeName(typeName, context), value = boolean, node = null, breakPoint = null;
|
|
42
35
|
context = null;
|
|
@@ -55,5 +48,11 @@ function primitiveFromStringLiteral(stringLiteral, context) {
|
|
|
55
48
|
const primitive = new Primitive(context, string, node, breakPoint, type, value);
|
|
56
49
|
return primitive;
|
|
57
50
|
}
|
|
51
|
+
function primitiveFromNominalValues(nominalValues, context) {
|
|
52
|
+
const { Type, Primitive } = _elements.default, primitiveString = (0, _string.primtiveStringFromNominalValues)(nominalValues), string = primitiveString, argumentTypeName = _typeNames.NOMINAL_VALUE_TYPE_NAME, typeName = _typeNames.LIST_TYPE_NAME, type = Type.fromTypeNameAndArgumentTypeName(typeName, argumentTypeName, context), value = nominalValues, node = null, breakPoint = null;
|
|
53
|
+
context = null;
|
|
54
|
+
const primitive = new Primitive(context, string, node, breakPoint, type, value);
|
|
55
|
+
return primitive;
|
|
56
|
+
}
|
|
58
57
|
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcHJpbWl0aXZlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IFNUUklOR19UWVBFX05BTUUsIEJPT0xFQU5fVFlQRV9OQU1FLCBOT01JTkFMX1ZBTFVFX1RZUEVfTkFNRSwgTElTVF9UWVBFX05BTUUgfSBmcm9tIFwiLi4vdHlwZU5hbWVzXCI7XG5pbXBvcnQgeyBwcmltdGl2ZVN0cmluZ0Zyb21Cb29sZWFuLCBwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWUsIHByaW10aXZlU3RyaW5nRnJvbU5vbWluYWxWYWx1ZXMsIHByaW10aXZlU3RyaW5nRnJvbVN0cmluZ0xpdGVyYWwgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJpbWl0aXZlRnJvbUJvb2xlYW4oYm9vbGVhbiwgY29udGV4dCkge1xuICBjb25zdCB7IFR5cGUsIFByaW1pdGl2ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByaW1pdGl2ZVN0cmluZyA9IHByaW10aXZlU3RyaW5nRnJvbUJvb2xlYW4oYm9vbGVhbiksXG4gICAgICAgIHN0cmluZyA9IHByaW1pdGl2ZVN0cmluZywgIC8vL1xuICAgICAgICB0eXBlTmFtZSA9IEJPT0xFQU5fVFlQRV9OQU1FLFxuICAgICAgICB0eXBlID0gVHlwZS5mcm9tVHlwZU5hbWUodHlwZU5hbWUsIGNvbnRleHQpLFxuICAgICAgICB2YWx1ZSA9IGJvb2xlYW4sICAvLy9cbiAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHByaW1pdGl2ZSA9IG5ldyBQcmltaXRpdmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCB2YWx1ZSk7XG5cbiAgcmV0dXJuIHByaW1pdGl2ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW1pdGl2ZUZyb21Ob21pbmFsVmFsdWUobm9taW5hbFZhbHVlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVHlwZSwgUHJpbWl0aXZlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJpbWl0aXZlU3RyaW5nID0gcHJpbXRpdmVTdHJpbmdGcm9tTm9taW5hbFZhbHVlKG5vbWluYWxWYWx1ZSksXG4gICAgICAgIHN0cmluZyA9IHByaW1pdGl2ZVN0cmluZywgIC8vL1xuICAgICAgICB0eXBlTmFtZSA9IE5PTUlOQUxfVkFMVUVfVFlQRV9OQU1FLFxuICAgICAgICB0eXBlID0gVHlwZS5mcm9tVHlwZU5hbWUodHlwZU5hbWUsIGNvbnRleHQpLFxuICAgICAgICB2YWx1ZSA9IG5vbWluYWxWYWx1ZSwgLy8vXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBub2RlID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBwcmltaXRpdmUgPSBuZXcgUHJpbWl0aXZlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgdmFsdWUpO1xuXG4gIHJldHVybiBwcmltaXRpdmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltaXRpdmVGcm9tU3RyaW5nTGl0ZXJhbChzdHJpbmdMaXRlcmFsLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVHlwZSwgUHJpbWl0aXZlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJpbWl0aXZlU3RyaW5nID0gcHJpbXRpdmVTdHJpbmdGcm9tU3RyaW5nTGl0ZXJhbChzdHJpbmdMaXRlcmFsKSxcbiAgICAgICAgc3RyaW5nID0gcHJpbWl0aXZlU3RyaW5nLCAgLy8vXG4gICAgICAgIHR5cGVOYW1lID0gU1RSSU5HX1RZUEVfTkFNRSxcbiAgICAgICAgdHlwZSA9IFR5cGUuZnJvbVR5cGVOYW1lKHR5cGVOYW1lLCBjb250ZXh0KSxcbiAgICAgICAgdmFsdWUgPSBzdHJpbmdMaXRlcmFsLCAgLy8vXG4gICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCBwcmltaXRpdmUgPSBuZXcgUHJpbWl0aXZlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgdmFsdWUpO1xuXG4gIHJldHVybiBwcmltaXRpdmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmltaXRpdmVGcm9tTm9taW5hbFZhbHVlcyhub21pbmFsVmFsdWVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVHlwZSwgUHJpbWl0aXZlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJpbWl0aXZlU3RyaW5nID0gcHJpbXRpdmVTdHJpbmdGcm9tTm9taW5hbFZhbHVlcyhub21pbmFsVmFsdWVzKSxcbiAgICAgICAgc3RyaW5nID0gcHJpbWl0aXZlU3RyaW5nLCAgLy8vXG4gICAgICAgIGFyZ3VtZW50VHlwZU5hbWUgPSBOT01JTkFMX1ZBTFVFX1RZUEVfTkFNRSxcbiAgICAgICAgdHlwZU5hbWUgPSBMSVNUX1RZUEVfTkFNRSxcbiAgICAgICAgdHlwZSA9IFR5cGUuZnJvbVR5cGVOYW1lQW5kQXJndW1lbnRUeXBlTmFtZSh0eXBlTmFtZSwgYXJndW1lbnRUeXBlTmFtZSwgY29udGV4dCksXG4gICAgICAgIHZhbHVlID0gbm9taW5hbFZhbHVlcywgIC8vL1xuICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcHJpbWl0aXZlID0gbmV3IFByaW1pdGl2ZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHZhbHVlKTtcblxuICByZXR1cm4gcHJpbWl0aXZlO1xufVxuIl0sIm5hbWVzIjpbInByaW1pdGl2ZUZyb21Cb29sZWFuIiwicHJpbWl0aXZlRnJvbU5vbWluYWxWYWx1ZSIsInByaW1pdGl2ZUZyb21Ob21pbmFsVmFsdWVzIiwicHJpbWl0aXZlRnJvbVN0cmluZ0xpdGVyYWwiLCJib29sZWFuIiwiY29udGV4dCIsIlR5cGUiLCJQcmltaXRpdmUiLCJlbGVtZW50cyIsInByaW1pdGl2ZVN0cmluZyIsInByaW10aXZlU3RyaW5nRnJvbUJvb2xlYW4iLCJzdHJpbmciLCJ0eXBlTmFtZSIsIkJPT0xFQU5fVFlQRV9OQU1FIiwidHlwZSIsImZyb21UeXBlTmFtZSIsInZhbHVlIiwibm9kZSIsImJyZWFrUG9pbnQiLCJwcmltaXRpdmUiLCJub21pbmFsVmFsdWUiLCJwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWUiLCJOT01JTkFMX1ZBTFVFX1RZUEVfTkFNRSIsInN0cmluZ0xpdGVyYWwiLCJwcmltdGl2ZVN0cmluZ0Zyb21TdHJpbmdMaXRlcmFsIiwiU1RSSU5HX1RZUEVfTkFNRSIsIm5vbWluYWxWYWx1ZXMiLCJwcmltdGl2ZVN0cmluZ0Zyb21Ob21pbmFsVmFsdWVzIiwiYXJndW1lbnRUeXBlTmFtZSIsIkxJU1RfVFlQRV9OQU1FIiwiZnJvbVR5cGVOYW1lQW5kQXJndW1lbnRUeXBlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBT2dCQTtlQUFBQTs7UUFpQkFDO2VBQUFBOztRQWtDQUM7ZUFBQUE7O1FBakJBQztlQUFBQTs7O2lFQXZDSzsyQkFFd0U7d0JBQytDOzs7Ozs7QUFFckksU0FBU0gscUJBQXFCSSxPQUFPLEVBQUVDLE9BQU87SUFDbkQsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyxpQkFBUSxFQUM5QkMsa0JBQWtCQyxJQUFBQSxpQ0FBeUIsRUFBQ04sVUFDNUNPLFNBQVNGLGlCQUNURyxXQUFXQyw0QkFBaUIsRUFDNUJDLE9BQU9SLEtBQUtTLFlBQVksQ0FBQ0gsVUFBVVAsVUFDbkNXLFFBQVFaLFNBQ1JhLE9BQU8sTUFDUEMsYUFBYTtJQUVuQmIsVUFBVTtJQUVWLE1BQU1jLFlBQVksSUFBSVosVUFBVUYsU0FBU00sUUFBUU0sTUFBTUMsWUFBWUosTUFBTUU7SUFFekUsT0FBT0c7QUFDVDtBQUVPLFNBQVNsQiwwQkFBMEJtQixZQUFZLEVBQUVmLE9BQU87SUFDN0QsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyxpQkFBUSxFQUM5QkMsa0JBQWtCWSxJQUFBQSxzQ0FBOEIsRUFBQ0QsZUFDakRULFNBQVNGLGlCQUNURyxXQUFXVSxrQ0FBdUIsRUFDbENSLE9BQU9SLEtBQUtTLFlBQVksQ0FBQ0gsVUFBVVAsVUFDbkNXLFFBQVFJLGNBQ1JGLGFBQWEsTUFDYkQsT0FBTztJQUViWixVQUFVO0lBRVYsTUFBTWMsWUFBWSxJQUFJWixVQUFVRixTQUFTTSxRQUFRTSxNQUFNQyxZQUFZSixNQUFNRTtJQUV6RSxPQUFPRztBQUNUO0FBRU8sU0FBU2hCLDJCQUEyQm9CLGFBQWEsRUFBRWxCLE9BQU87SUFDL0QsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyxpQkFBUSxFQUM5QkMsa0JBQWtCZSxJQUFBQSx1Q0FBK0IsRUFBQ0QsZ0JBQ2xEWixTQUFTRixpQkFDVEcsV0FBV2EsMkJBQWdCLEVBQzNCWCxPQUFPUixLQUFLUyxZQUFZLENBQUNILFVBQVVQLFVBQ25DVyxRQUFRTyxlQUNSTixPQUFPLE1BQ1BDLGFBQWE7SUFFbkJiLFVBQVU7SUFFVixNQUFNYyxZQUFZLElBQUlaLFVBQVVGLFNBQVNNLFFBQVFNLE1BQU1DLFlBQVlKLE1BQU1FO0lBRXpFLE9BQU9HO0FBQ1Q7QUFFTyxTQUFTakIsMkJBQTJCd0IsYUFBYSxFQUFFckIsT0FBTztJQUMvRCxNQUFNLEVBQUVDLElBQUksRUFBRUMsU0FBUyxFQUFFLEdBQUdDLGlCQUFRLEVBQzlCQyxrQkFBa0JrQixJQUFBQSx1Q0FBK0IsRUFBQ0QsZ0JBQ2xEZixTQUFTRixpQkFDVG1CLG1CQUFtQk4sa0NBQXVCLEVBQzFDVixXQUFXaUIseUJBQWMsRUFDekJmLE9BQU9SLEtBQUt3QiwrQkFBK0IsQ0FBQ2xCLFVBQVVnQixrQkFBa0J2QixVQUN4RVcsUUFBUVUsZUFDUlQsT0FBTyxNQUNQQyxhQUFhO0lBRW5CYixVQUFVO0lBRVYsTUFBTWMsWUFBWSxJQUFJWixVQUFVRixTQUFTTSxRQUFRTSxNQUFNQyxZQUFZSixNQUFNRTtJQUV6RSxPQUFPRztBQUNUIn0=
|