occam-nominal 1.0.554 → 1.0.558
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/assumption.js +36 -61
- package/lib/element/link.js +5 -11
- package/lib/element/statement.js +6 -11
- package/lib/element/subproof.js +2 -3
- package/lib/element/term.js +4 -4
- package/lib/utilities/element.js +1 -8
- package/lib/utilities/json.js +1 -1
- package/package.json +5 -5
- package/src/element/assumption.js +39 -78
- package/src/element/link.js +4 -12
- package/src/element/statement.js +6 -15
- package/src/element/subproof.js +1 -3
- package/src/element/term.js +5 -4
- package/src/utilities/element.js +0 -7
- package/src/utilities/json.js +3 -1
package/lib/utilities/json.js
CHANGED
|
@@ -829,4 +829,4 @@ function findMetaTypeByName(name, context) {
|
|
|
829
829
|
return metaType;
|
|
830
830
|
}
|
|
831
831
|
|
|
832
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlIH0gPSBqc29uO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAganNvbiA9IHR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgIG5hbWUgPSBzdHJpbmc7ICAvLy9cblxuICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVsIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbEpTT04gPSBsYWJlbDsgIC8vL1xuXG4gIGpzb24gPSBsYWJlbEpTT047IC8vL1xuXG4gIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlZHVjdGlvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IERlZHVjdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb247ICAvLy9cblxuICBqc29uID0gZGVkdWN0aW9uSlNPTjsgIC8vL1xuXG4gIGRlZHVjdGlvbiA9IERlZHVjdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzaWduYXR1cmUgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAganNvbiA9IHNpZ25hdHVyZUpTT047IC8vL1xuXG4gICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmNsdXNpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25jbHVzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uOyAgLy8vXG5cbiAganNvbiA9IGNvbmNsdXNpb25KU09OOyAgLy8vXG5cbiAgY29uY2x1c2lvbiA9IENvbmNsdXNpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwcm92aXNpb25hbCB9ID0ganNvbjtcblxuICByZXR1cm4gcHJvdmlzaW9uYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICh7IGNvbnRleHQgfSA9IGpzb24pO1xuXG4gIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICBjb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNGcm9tSlNPTihqc29uLCB0eXBlcywgY29udGV4dCkge1xuICBjb25zdCB7IHR5cGVzOiB0eXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cztcblxuICB0eXBlc0pTT04uZm9yRWFjaCgodHlwZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gZWxlbWVudHMsXG4gICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsaW5rcyB9ID0ganNvbjtcblxuICBjb25zdCB7IExpbmsgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsaW5rc0pTT04gPSBsaW5rczsgLy8vXG5cbiAgbGlua3MgPSBsaW5rc0pTT04ubWFwKChsaW5rSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsaW5rSlNPTiwgIC8vL1xuICAgICAgICAgIGxpbmsgPSBMaW5rLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxpbms7XG4gIH0pO1xuXG4gIHJldHVybiBsaW5rcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJ1bGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBydWxlc0pTT04gPSBydWxlczsgLy8vXG5cbiAgcnVsZXMgPSBydWxlc0pTT04ubWFwKChydWxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBydWxlSlNPTiwgIC8vL1xuICAgICAgICAgIHJ1bGUgPSBSdWxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH0pO1xuXG4gIHJldHVybiBydWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZnJhbWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRnJhbWUgfSA9IGVsZW1lbnRzLFxuICAgIGZyYW1lc0pTT04gPSBmcmFtZXM7IC8vL1xuXG4gIGZyYW1lcyA9IGZyYW1lc0pTT04ubWFwKChmcmFtZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZnJhbWVKU09OLCAgLy8vXG4gICAgICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsYWJlbEpTT04sIC8vL1xuICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGF4aW9tcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEF4aW9tIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tczsgLy8vXG5cbiAgYXhpb21zID0gYXhpb21zSlNPTi5tYXAoKGF4aW9tSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBheGlvbUpTT04sICAvLy9cbiAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2NoZW1hcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFNjaGVtYSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHNjaGVtYXNKU09OID0gc2NoZW1hczsgLy8vXG5cbiAgc2NoZW1hcyA9IHNjaGVtYXNKU09OLm1hcCgoc2NoZW1hSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzY2hlbWFKU09OLCAgLy8vXG4gICAgICBzY2hlbWEgPSBTY2hlbWEuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9KTtcblxuICByZXR1cm4gc2NoZW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcmVtaXNlc0pTT04gPSBwcmVtaXNlczsgIC8vL1xuXG4gIHByZW1pc2VzID0gcHJlbWlzZXNKU09OLm1hcCgocHJlbWlzZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJlbWlzZUpTT04sIC8vL1xuICAgICAgICAgIHByZW1pc2UgPSBQcmVtaXNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGVxdWFsaXRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzOyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0pTT04ubWFwKChlcXVhbGl0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZXF1YWxpdHlKU09OLCAgLy8vXG4gICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9wZXJ0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllczsgLy8vXG5cbiAgcHJvcGVydGllcyA9IHByb3BlcnRpZXNKU09OLm1hcCgocHJvcGVydHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5SlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5ID0gUHJvcGVydHkuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4TmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwcmVmaXhOYW1lIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcmVmaXhOYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBzdXBlclR5cGVzOiBzdXBlclR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04ubWFwKChzdXBlclR5cGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1cGVyVHlwZUpTT04sICAvLy9cbiAgICAgIHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgbmFtZSA9IHN0cmluZywgIC8vL1xuICAgICAgdHlwZSA9IGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpLFxuICAgICAgc3VwZXJUeXBlID0gdHlwZTsgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGh5cG90aGVzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBIeXBvdGhlc2lzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzOyAgLy8vXG5cbiAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLm1hcCgoaHlwb3RoZXNpc0pTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gaHlwb3RoZXNpc0pTT04sIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXMgPSBIeXBvdGhlc2lzLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXM7XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50czsgLy8vXG5cbiAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHNKU09OLm1hcCgoc3RhdGVtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdGF0ZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3NlcnRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZUFzc2VydGlvbiwgU2NoZW1hQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIENvbnRhaW5lZEFzc2VydGlvbiwgU2lnbmF0dXJlQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgU2NoZW1hQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgRGVmaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KVxuICAgICAgICAgICAgICAgICAgIHx8IFByb3BlcnR5QXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB8fCBDb250YWluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB8fCBTaWduYXR1cmVBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGdlbmVyYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBHZW5lcmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBnZW5lcmF0b3JzSlNPTiA9IGdlbmVyYXRvcnM7IC8vL1xuXG4gIGdlbmVyYXRvcnMgPSBnZW5lcmF0b3JzSlNPTi5tYXAoKGdlbmVyYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZ2VuZXJhdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGdlbmVyYXRvciA9IEdlbmVyYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBnZW5lcmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmplY3R1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzOyAvLy9cblxuICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTi5tYXAoKGNvbmplY3R1cmVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbmplY3R1cmVKU09OLCAgLy8vXG4gICAgICAgICAgY29uamVjdHVyZSA9IENvbmplY3R1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29tYmluYXRvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzOyAvLy9cblxuICBjb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzSlNPTi5tYXAoKGNvbWJpbmF0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbWJpbmF0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29tYmluYXRvciA9IENvbWJpbmF0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc3VtcHRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnM7IC8vL1xuXG4gIGFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnNKU09OLm1hcCgoYXNzdW1wdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzdW1wdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uID0gQXNzdW1wdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJhaW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uc3RyYWludHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJhaW50IH0gPSBlbGVtZW50cyxcbiAgICBjb25zdHJhaW50c0pTT04gPSBjb25zdHJhaW50czsgLy8vXG5cbiAgY29uc3RyYWludHMgPSBjb25zdHJhaW50c0pTT04ubWFwKChjb25zdHJhaW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJhaW50SlNPTiwgIC8vL1xuICAgICAgY29uc3RyYWludCA9IENvbnN0cmFpbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cmFpbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlUHJlZml4ZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlUHJlZml4IH0gPSBlbGVtZW50cyxcbiAgICAgICAgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlczsgLy8vXG5cbiAgdHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzSlNPTi5tYXAoKHR5cGVQcmVmaXhKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHR5cGVQcmVmaXhKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeCA9IFR5cGVQcmVmaXguZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeDtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uc3RydWN0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uc3RydWN0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzOyAvLy9cblxuICBjb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnNKU09OLm1hcCgoY29uc3RydWN0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbnN0cnVjdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN1cHBvc2l0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN1cHBvc2l0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uczsgIC8vL1xuXG4gIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04ubWFwKChzdXBwb3NpdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3VwcG9zaXRpb25KU09OLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbiA9IFN1cHBvc2l0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3Vic3RpdHV0aW9ucyB9ID0ganNvbjsgIC8vL1xuXG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9uczsgLy8vXG5cbiAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OLm1hcCgoc3Vic3RpdHV0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdWJzdGl0dXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbkpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXM7IC8vL1xuXG4gIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTi5tYXAoKG1ldGF2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgY29uc3QgeyBjb250ZXh0cyB9ID0ganNvbjtcblxuICBjb25zdCBtbmVtaWNDb250ZXh0cyA9IGNvbnRleHRzLm1hcCgoY29udGV4dCkgPT4ge1xuICAgIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICAgIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgICBjb25zdCBtbmVtaWNDb250ZXh0ID0gTW5lbWljQ29udGV4dC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0OyAgLy8vXG4gIH0pO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZFZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXM7IC8vL1xuXG4gIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRWYXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZGVjbGFyZWRWYXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSB2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZGVjbGFyZWRNZXRhdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTi5tYXAoKGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGU7ICAvLy9cblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVUb1R5cGVKU09OKHR5cGUpIHtcbiAgbGV0IHR5cGVKU09OID0gbnVsbDtcblxuICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGFicmlkZ2VkID0gdHJ1ZTtcblxuICAgIHR5cGVKU09OID0gdHlwZS50b0pTT04oYWJyaWRnZWQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxUb0xhYmVsSlNPTihsYWJlbCkge1xuICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICByZXR1cm4gbGFiZWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVUb01ldGFUeXBlSlNPTihtZXRhVHlwZSkge1xuICBjb25zdCBtZXRhVHlwZUpTT04gPSAobWV0YVR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhVHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBtZXRhVHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04oZGVkdWN0aW9uKSB7XG4gIGNvbnN0IGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04oc2lnbmF0dXJlKSB7XG4gIGNvbnN0IHNpZ25hdHVyZUpTT04gPSAoc2lnbmF0dXJlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gc2lnbmF0dXJlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04ocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW9uYWxKU09OID0gcHJvdmlzaW9uYWw7ICAvLy9cblxuICByZXR1cm4gcHJvdmlzaW9uYWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04obW5lbWljQ29udGV4dCkge1xuICBjb25zdCBtbmVtaWNDb250ZXh0SlNPTiA9IG1uZW1pY0NvbnRleHQudG9KU09OKCk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbkpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IFRlcm1TdWJzdGl0dXRpb24sIEZyYW1lU3Vic3RpdHV0aW9uLCBTdGF0ZW1lbnRTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBUZXJtU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8IEZyYW1lU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8IFN0YXRlbWVudFN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNUb1R5cGVzSlNPTih0eXBlcykge1xuICBjb25zdCB0eXBlc0pTT04gPSB0eXBlcy5tYXAoKHR5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdHlwZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1RvVGVybXNKU09OKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zSlNPTiA9IHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICAgIHJldHVybiB0ZXJtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtzVG9MaW5rc0pTT04obGlua3MpIHtcbiAgY29uc3QgbGlua3NKU09OID0gbGlua3MubWFwKChsaW5rKSA9PiB7XG4gICAgY29uc3QgbGlua0pTT04gPSBsaW5rLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxpbmtKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGlua3NKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNUb1J1bGVzSlNPTihydWxlcykge1xuICBjb25zdCBydWxlc0pTT04gPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICBjb25zdCBydWxlSlNPTiA9IHJ1bGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcnVsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBydWxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNUb0xhYmVsc0pTT04obGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHMubWFwKChsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVsc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNUb0ZyYW1lc0pTT04oZnJhbWVzKSB7XG4gIGNvbnN0IGZyYW1lc0pTT04gPSBmcmFtZXMubWFwKChmcmFtZSkgPT4ge1xuICAgIGNvbnN0IGZyYW1lSlNPTiA9IGZyYW1lLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGZyYW1lSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNUb0F4aW9tc0pTT04oYXhpb21zKSB7XG4gIGNvbnN0IGF4aW9tc0pTT04gPSBheGlvbXMubWFwKChheGlvbSkgPT4ge1xuICAgIGNvbnN0IGF4aW9tSlNPTiA9IGF4aW9tLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGF4aW9tSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFzVG9TY2hlbWFzSlNPTihzY2hlbWFzKSB7XG4gIGNvbnN0IHNjaGVtYXNKU09OID0gc2NoZW1hcy5tYXAoKHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYUpTT04gPSBzY2hlbWEudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc2NoZW1hSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHNjaGVtYXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiB0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04ocHJlZml4bmFtZSkge1xuICBjb25zdCBwcmVmaXhOYW1lSlNPTiA9IHByZWZpeG5hbWU7ICAvLy9cblxuICByZXR1cm4gcHJlZml4TmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTihzdXBlclR5cGVzKSB7XG4gIGNvbnN0IHN1cGVyVHlwZXNKU09OID0gc3VwZXJUeXBlcy5tYXAoKHN1cGVyVHlwZSkgPT4ge1xuICAgIGNvbnN0IGFicmlkZ2VkID0gdHJ1ZSxcbiAgICAgIHN1cGVyVHlwZUpTT04gPSBzdXBlclR5cGUudG9KU09OKGFicmlkZ2VkKTtcblxuICAgIHJldHVybiBzdXBlclR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTihlcXVhbGl0aWVzKSB7XG4gIGNvbnN0IGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllcy5tYXAoKGVxdWFsaXR5KSA9PiB7XG4gICAgY29uc3QgZXF1YWxpdHlKU09OID0gZXF1YWxpdHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTihzdGF0ZW1lbnRzKSB7XG4gIGNvbnN0IHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50cy5tYXAoKHN0YXRlbWVudCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04oYXNzZXJ0aW9ucykge1xuICBjb25zdCBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnMubWFwKChhc3NlcnRpb24pID0+IHtcbiAgICBjb25zdCBhc3NlcnRpb25KU09OID0gYXNzZXJ0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRvcnNUb0dlbmVyYXRvcnNKU09OKGdlbmVyYXRvcnMpIHtcbiAgY29uc3QgZ2VuZXJhdG9yc0pTT04gPSBnZW5lcmF0b3JzLm1hcCgoZ2VuZXJhdG9yKSA9PiB7XG4gICAgY29uc3QgZ2VuZXJhdG9ySlNPTiA9IGdlbmVyYXRvci50b0pTT04oKTtcblxuICAgIHJldHVybiBnZW5lcmF0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gZ2VuZXJhdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJhaW50c1RvQ29uc3RyYWludHNKU09OKGNvbnN0cmFpbnRzKSB7XG4gIGNvbnN0IGNvbnN0cmFpbnRzSlNPTiA9IGNvbnN0cmFpbnRzLm1hcCgoY29uc3RyYWludCkgPT4ge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRKU09OID0gY29uc3RyYWludC50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25zdHJhaW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cmFpbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04oY29uamVjdHVyZXMpIHtcbiAgY29uc3QgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXMubWFwKChjb25qZWN0dXJlKSA9PiB7XG4gICAgY29uc3QgY29uamVjdHVyZUpTT04gPSBjb25qZWN0dXJlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmVKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTihjb21iaW5hdG9ycykge1xuICBjb25zdCBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9ycy5tYXAoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBjb25zdCBjb21iaW5hdG9ySlNPTiA9IGNvbWJpbmF0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OKGFzc3VtcHRpb25zKSB7XG4gIGNvbnN0IGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zLm1hcCgoYXNzdW1wdGlvbikgPT4ge1xuICAgIGNvbnN0IGFzc3VtcHRpb25KU09OID0gYXNzdW1wdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTihzdXBwb3NpdGlvbnMpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9ucy5tYXAoKHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25KU09OID0gc3VwcG9zaXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTihjb25zdHJ1Y3RvcnMpIHtcbiAgY29uc3QgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9ycy5tYXAoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgY29uc3QgY29uc3RydWN0b3JKU09OID0gY29uc3RydWN0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTih0eXBlUHJlZml4ZXMpIHtcbiAgY29uc3QgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlcy5tYXAoKHR5cGVQcmVmaXgpID0+IHtcbiAgICBjb25zdCB0eXBlUHJlZml4SlNPTiA9IHR5cGVQcmVmaXgudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeEpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc1RvU3Vic3RpdHV0aW9uc0pTT04oc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnMubWFwKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25KU09OID0gc3Vic3RpdHV0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OKG1ldGF2YXJpYWJsZXMpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzLm1hcCgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c1RvTW5lbWljQ29udGV4dHNKU09OKG1uZW1pY0NvbnRleHRzKSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzSlNPTiA9IG1uZW1pY0NvbnRleHRzLm1hcCgobW5lbWljQ29udGV4dCkgPT4ge1xuICAgIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04oZGVjbGFyZWRWYXJpYWJsZXMpIHtcbiAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXMubWFwKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZUpTT04gPSBkZWNsYXJlZFZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OKGRlY2xhcmVkTWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzLm1hcCgoZGVjbGFyZWRNZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OO1xufVxuXG5mdW5jdGlvbiBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCkge1xuICBjb25zdCBtZXRhVHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cbiJdLCJuYW1lcyI6WyJhc3NlcnRpb25zRnJvbUpTT04iLCJhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTiIsImFzc3VtcHRpb25zRnJvbUpTT04iLCJhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OIiwiYXhpb21zRnJvbUpTT04iLCJheGlvbXNUb0F4aW9tc0pTT04iLCJjb21iaW5hdG9yc0Zyb21KU09OIiwiY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTiIsImNvbmNsdXNpb25Gcm9tSlNPTiIsImNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OIiwiY29uamVjdHVyZXNGcm9tSlNPTiIsImNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04iLCJjb25zdHJhaW50c0Zyb21KU09OIiwiY29uc3RyYWludHNUb0NvbnN0cmFpbnRzSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZFZhcmlhYmxlc0Zyb21KU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNUb0RlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwiZXF1YWxpdGllc0Zyb21KU09OIiwiZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04iLCJmcmFtZXNGcm9tSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImdlbmVyYXRvcnNGcm9tSlNPTiIsImdlbmVyYXRvcnNUb0dlbmVyYXRvcnNKU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibGlua3NGcm9tSlNPTiIsImxpbmtzVG9MaW5rc0pTT04iLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwibW5lbWljQ29udGV4dEZyb21KU09OIiwibW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04iLCJtbmVtaWNDb250ZXh0c0Zyb21KU09OIiwibW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTiIsInByZWZpeE5hbWVGcm9tSlNPTiIsInByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9wZXJ0aWVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzY2hlbWFzRnJvbUpTT04iLCJzY2hlbWFzVG9TY2hlbWFzSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwic3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04iLCJzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1zRnJvbUpTT04iLCJ0ZXJtc1RvVGVybXNKU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsInR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTiIsInR5cGVUb1R5cGVKU09OIiwidHlwZXNGcm9tSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJqc29uIiwiY29udGV4dCIsInR5cGUiLCJzdHJpbmciLCJuYW1lIiwiZmluZFR5cGVCeU5hbWUiLCJsYWJlbCIsIkxhYmVsIiwiZWxlbWVudHMiLCJsYWJlbEpTT04iLCJmcm9tSlNPTiIsIm1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlOYW1lIiwiZGVkdWN0aW9uIiwiRGVkdWN0aW9uIiwiZGVkdWN0aW9uSlNPTiIsInNpZ25hdHVyZSIsIlNpZ25hdHVyZSIsInNpZ25hdHVyZUpTT04iLCJjb25jbHVzaW9uIiwiQ29uY2x1c2lvbiIsImNvbmNsdXNpb25KU09OIiwicHJvdmlzaW9uYWwiLCJyZWxlYXNlQ29udGV4dCIsIm1uZW1pY0NvbnRleHQiLCJNbmVtaWNDb250ZXh0IiwidHlwZXMiLCJ0eXBlc0pTT04iLCJUeXBlIiwiZm9yRWFjaCIsInR5cGVKU09OIiwicHVzaCIsInRlcm1zIiwiVGVybSIsInRlcm1zSlNPTiIsIm1hcCIsInRlcm1KU09OIiwidGVybSIsImxpbmtzIiwiTGluayIsImxpbmtzSlNPTiIsImxpbmtKU09OIiwibGluayIsInJ1bGVzIiwiUnVsZSIsInJ1bGVzSlNPTiIsInJ1bGVKU09OIiwicnVsZSIsImZyYW1lcyIsIkZyYW1lIiwiZnJhbWVzSlNPTiIsImZyYW1lSlNPTiIsImZyYW1lIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwic2NoZW1hcyIsIlNjaGVtYSIsInNjaGVtYXNKU09OIiwic2NoZW1hSlNPTiIsInNjaGVtYSIsInByZW1pc2VzIiwiUHJlbWlzZSIsInByZW1pc2VzSlNPTiIsInByZW1pc2VKU09OIiwicHJlbWlzZSIsInRoZW9yZW1zIiwiVGhlb3JlbSIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1KU09OIiwidGhlb3JlbSIsImVxdWFsaXRpZXMiLCJFcXVhbGl0eSIsImVxdWFsaXRpZXNKU09OIiwiZXF1YWxpdHlKU09OIiwiZXF1YWxpdHkiLCJwcm9wZXJ0aWVzIiwiUHJvcGVydHkiLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5SlNPTiIsInByb3BlcnR5IiwicHJlZml4TmFtZSIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZUpTT04iLCJzdXBlclR5cGUiLCJoeXBvdGhlc2VzIiwiSHlwb3RoZXNpcyIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNpc0pTT04iLCJoeXBvdGhlc2lzIiwic3RhdGVtZW50cyIsIlN0YXRlbWVudCIsInN0YXRlbWVudHNKU09OIiwic3RhdGVtZW50SlNPTiIsInN0YXRlbWVudCIsImFzc2VydGlvbnMiLCJUeXBlQXNzZXJ0aW9uIiwiU2NoZW1hQXNzZXJ0aW9uIiwiRGVmaW5lZEFzc2VydGlvbiIsIlByb3BlcnR5QXNzZXJ0aW9uIiwiU3VicHJvb2ZBc3NlcnRpb24iLCJDb250YWluZWRBc3NlcnRpb24iLCJTaWduYXR1cmVBc3NlcnRpb24iLCJhc3NlcnRpb25zSlNPTiIsImFzc2VydGlvbkpTT04iLCJhc3NlcnRpb24iLCJnZW5lcmF0b3JzIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yc0pTT04iLCJnZW5lcmF0b3JKU09OIiwiZ2VuZXJhdG9yIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiYXNzdW1wdGlvbnMiLCJBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbnNKU09OIiwiYXNzdW1wdGlvbkpTT04iLCJhc3N1bXB0aW9uIiwiY29uc3RyYWludHMiLCJDb25zdHJhaW50IiwiY29uc3RyYWludHNKU09OIiwiY29uc3RyYWludEpTT04iLCJjb25zdHJhaW50IiwidHlwZVByZWZpeGVzIiwiVHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4SlNPTiIsInR5cGVQcmVmaXgiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnNKU09OIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVzSlNPTiIsIm1ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGUiLCJjb250ZXh0cyIsIm1uZW1pY0NvbnRleHRzIiwiZGVjbGFyZWRWYXJpYWJsZXMiLCJWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwiYWJyaWRnZWQiLCJ0b0pTT04iLCJtZXRhVHlwZUpTT04iLCJwcm92aXNpb25hbEpTT04iLCJtbmVtaWNDb250ZXh0SlNPTiIsIlRlcm1TdWJzdGl0dXRpb24iLCJGcmFtZVN1YnN0aXR1dGlvbiIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsInByZWZpeG5hbWUiLCJwcmVmaXhOYW1lSlNPTiIsIm1uZW1pY0NvbnRleHRzSlNPTiIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWdXZ0JBO2VBQUFBOztRQXVjQUM7ZUFBQUE7O1FBallBQztlQUFBQTs7UUFtYkFDO2VBQUFBOztRQS9vQkFDO2VBQUFBOztRQTRmQUM7ZUFBQUE7O1FBaFRBQztlQUFBQTs7UUF5YkFDO2VBQUFBOztRQW53QkFDO2VBQUFBOztRQXFpQkFDO2VBQUFBOztRQTNPQUM7ZUFBQUE7O1FBK2JBQztlQUFBQTs7UUEvWUFDO2VBQUFBOztRQXFZQUM7ZUFBQUE7O1FBcldBQztlQUFBQTs7UUF1WkFDO2VBQUFBOztRQXJUQUM7ZUFBQUE7O1FBaVhBQztlQUFBQTs7UUFsWUFDO2VBQUFBOztRQXdYQUM7ZUFBQUE7O1FBLzJCQUM7ZUFBQUE7O1FBbWpCQUM7ZUFBQUE7O1FBelZBQztlQUFBQTs7UUF5Z0JBQztlQUFBQTs7UUF6bUJBQztlQUFBQTs7UUFraEJBQztlQUFBQTs7UUF0VUFDO2VBQUFBOztRQTJiQUM7ZUFBQUE7O1FBamZBQztlQUFBQTs7UUE4YUFDO2VBQUFBOztRQTF0QkFDO2VBQUFBOztRQWlrQkFDO2VBQUFBOztRQTNaQUM7ZUFBQUE7O1FBd2ZBQztlQUFBQTs7UUF4aUJBQztlQUFBQTs7UUFvaEJBQztlQUFBQTs7UUE3bkJBQztlQUFBQTs7UUEwakJBQztlQUFBQTs7UUF0RkFDO2VBQUFBOztRQXNZQUM7ZUFBQUE7O1FBNXlCQUM7ZUFBQUE7O1FBOGhCQUM7ZUFBQUE7O1FBeEdBQztlQUFBQTs7UUFnWUFDO2VBQUFBOztRQTNtQkFDO2VBQUFBOztRQThjQUM7ZUFBQUE7O1FBOWdCQUM7ZUFBQUE7O1FBZ2ZBQztlQUFBQTs7UUFoY0FDO2VBQUFBOztRQStlQUM7ZUFBQUE7O1FBaHJCQUM7ZUFBQUE7O1FBOGhCQUM7ZUFBQUE7O1FBN2RBQztlQUFBQTs7UUE4Z0JBQztlQUFBQTs7UUE5Y0FDO2VBQUFBOztRQXNmQUM7ZUFBQUE7O1FBbnBC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
|
|
832
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlIH0gPSBqc29uO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAganNvbiA9IHR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgIG5hbWUgPSBzdHJpbmc7ICAvLy9cblxuICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVsIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbEpTT04gPSBsYWJlbDsgIC8vL1xuXG4gIGpzb24gPSBsYWJlbEpTT047IC8vL1xuXG4gIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlZHVjdGlvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IERlZHVjdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb247ICAvLy9cblxuICBqc29uID0gZGVkdWN0aW9uSlNPTjsgIC8vL1xuXG4gIGRlZHVjdGlvbiA9IERlZHVjdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzaWduYXR1cmUgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAganNvbiA9IHNpZ25hdHVyZUpTT047IC8vL1xuXG4gICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmNsdXNpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25jbHVzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uOyAgLy8vXG5cbiAganNvbiA9IGNvbmNsdXNpb25KU09OOyAgLy8vXG5cbiAgY29uY2x1c2lvbiA9IENvbmNsdXNpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwcm92aXNpb25hbCB9ID0ganNvbjtcblxuICByZXR1cm4gcHJvdmlzaW9uYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICh7IGNvbnRleHQgfSA9IGpzb24pO1xuXG4gIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICBjb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNGcm9tSlNPTihqc29uLCB0eXBlcywgY29udGV4dCkge1xuICBjb25zdCB7IHR5cGVzOiB0eXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cztcblxuICB0eXBlc0pTT04uZm9yRWFjaCgodHlwZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gZWxlbWVudHMsXG4gICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsaW5rcyB9ID0ganNvbjtcblxuICBjb25zdCB7IExpbmsgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsaW5rc0pTT04gPSBsaW5rczsgLy8vXG5cbiAgbGlua3MgPSBsaW5rc0pTT04ubWFwKChsaW5rSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsaW5rSlNPTiwgIC8vL1xuICAgICAgICAgIGxpbmsgPSBMaW5rLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxpbms7XG4gIH0pO1xuXG4gIHJldHVybiBsaW5rcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJ1bGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBydWxlc0pTT04gPSBydWxlczsgLy8vXG5cbiAgcnVsZXMgPSBydWxlc0pTT04ubWFwKChydWxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBydWxlSlNPTiwgIC8vL1xuICAgICAgICAgIHJ1bGUgPSBSdWxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH0pO1xuXG4gIHJldHVybiBydWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZnJhbWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRnJhbWUgfSA9IGVsZW1lbnRzLFxuICAgIGZyYW1lc0pTT04gPSBmcmFtZXM7IC8vL1xuXG4gIGZyYW1lcyA9IGZyYW1lc0pTT04ubWFwKChmcmFtZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZnJhbWVKU09OLCAgLy8vXG4gICAgICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsYWJlbEpTT04sIC8vL1xuICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGF4aW9tcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEF4aW9tIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tczsgLy8vXG5cbiAgYXhpb21zID0gYXhpb21zSlNPTi5tYXAoKGF4aW9tSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBheGlvbUpTT04sICAvLy9cbiAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2NoZW1hcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFNjaGVtYSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHNjaGVtYXNKU09OID0gc2NoZW1hczsgLy8vXG5cbiAgc2NoZW1hcyA9IHNjaGVtYXNKU09OLm1hcCgoc2NoZW1hSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzY2hlbWFKU09OLCAgLy8vXG4gICAgICBzY2hlbWEgPSBTY2hlbWEuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9KTtcblxuICByZXR1cm4gc2NoZW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcmVtaXNlc0pTT04gPSBwcmVtaXNlczsgIC8vL1xuXG4gIHByZW1pc2VzID0gcHJlbWlzZXNKU09OLm1hcCgocHJlbWlzZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJlbWlzZUpTT04sIC8vL1xuICAgICAgICAgIHByZW1pc2UgPSBQcmVtaXNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGVxdWFsaXRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzOyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0pTT04ubWFwKChlcXVhbGl0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZXF1YWxpdHlKU09OLCAgLy8vXG4gICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9wZXJ0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllczsgLy8vXG5cbiAgcHJvcGVydGllcyA9IHByb3BlcnRpZXNKU09OLm1hcCgocHJvcGVydHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5SlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5ID0gUHJvcGVydHkuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4TmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwcmVmaXhOYW1lIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcmVmaXhOYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBzdXBlclR5cGVzOiBzdXBlclR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04ubWFwKChzdXBlclR5cGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1cGVyVHlwZUpTT04sICAvLy9cbiAgICAgIHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgbmFtZSA9IHN0cmluZywgIC8vL1xuICAgICAgdHlwZSA9IGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpLFxuICAgICAgc3VwZXJUeXBlID0gdHlwZTsgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGh5cG90aGVzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBIeXBvdGhlc2lzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzOyAgLy8vXG5cbiAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLm1hcCgoaHlwb3RoZXNpc0pTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gaHlwb3RoZXNpc0pTT04sIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXMgPSBIeXBvdGhlc2lzLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXM7XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50czsgLy8vXG5cbiAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHNKU09OLm1hcCgoc3RhdGVtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdGF0ZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3NlcnRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZUFzc2VydGlvbiwgU2NoZW1hQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIENvbnRhaW5lZEFzc2VydGlvbiwgU2lnbmF0dXJlQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgU2NoZW1hQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgRGVmaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KVxuICAgICAgICAgICAgICAgICAgIHx8IFByb3BlcnR5QXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfHwgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB8fCBDb250YWluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB8fCBTaWduYXR1cmVBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGdlbmVyYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBHZW5lcmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBnZW5lcmF0b3JzSlNPTiA9IGdlbmVyYXRvcnM7IC8vL1xuXG4gIGdlbmVyYXRvcnMgPSBnZW5lcmF0b3JzSlNPTi5tYXAoKGdlbmVyYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZ2VuZXJhdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGdlbmVyYXRvciA9IEdlbmVyYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBnZW5lcmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmplY3R1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzOyAvLy9cblxuICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTi5tYXAoKGNvbmplY3R1cmVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbmplY3R1cmVKU09OLCAgLy8vXG4gICAgICAgICAgY29uamVjdHVyZSA9IENvbmplY3R1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29tYmluYXRvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzOyAvLy9cblxuICBjb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzSlNPTi5tYXAoKGNvbWJpbmF0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbWJpbmF0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29tYmluYXRvciA9IENvbWJpbmF0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc3VtcHRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnM7IC8vL1xuXG4gIGFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnNKU09OLm1hcCgoYXNzdW1wdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzdW1wdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uID0gQXNzdW1wdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJhaW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uc3RyYWludHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJhaW50IH0gPSBlbGVtZW50cyxcbiAgICBjb25zdHJhaW50c0pTT04gPSBjb25zdHJhaW50czsgLy8vXG5cbiAgY29uc3RyYWludHMgPSBjb25zdHJhaW50c0pTT04ubWFwKChjb25zdHJhaW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJhaW50SlNPTiwgIC8vL1xuICAgICAgY29uc3RyYWludCA9IENvbnN0cmFpbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cmFpbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlUHJlZml4ZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlUHJlZml4IH0gPSBlbGVtZW50cyxcbiAgICAgICAgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlczsgLy8vXG5cbiAgdHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzSlNPTi5tYXAoKHR5cGVQcmVmaXhKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHR5cGVQcmVmaXhKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeCA9IFR5cGVQcmVmaXguZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeDtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uc3RydWN0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uc3RydWN0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzOyAvLy9cblxuICBjb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnNKU09OLm1hcCgoY29uc3RydWN0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbnN0cnVjdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN1cHBvc2l0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN1cHBvc2l0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uczsgIC8vL1xuXG4gIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04ubWFwKChzdXBwb3NpdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3VwcG9zaXRpb25KU09OLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbiA9IFN1cHBvc2l0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3Vic3RpdHV0aW9ucyB9ID0ganNvbjsgIC8vL1xuXG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9uczsgLy8vXG5cbiAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OLm1hcCgoc3Vic3RpdHV0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdWJzdGl0dXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbkpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXM7IC8vL1xuXG4gIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTi5tYXAoKG1ldGF2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgY29uc3QgeyBjb250ZXh0cyB9ID0ganNvbjtcblxuICBjb25zdCBtbmVtaWNDb250ZXh0cyA9IGNvbnRleHRzLm1hcCgoY29udGV4dCkgPT4ge1xuICAgIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICAgIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgICBjb25zdCBtbmVtaWNDb250ZXh0ID0gTW5lbWljQ29udGV4dC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0OyAgLy8vXG4gIH0pO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZFZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXM7IC8vL1xuXG4gIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRWYXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZGVjbGFyZWRWYXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSB2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZGVjbGFyZWRNZXRhdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTi5tYXAoKGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGU7ICAvLy9cblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVUb1R5cGVKU09OKHR5cGUpIHtcbiAgbGV0IHR5cGVKU09OID0gbnVsbDtcblxuICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGFicmlkZ2VkID0gdHJ1ZTtcblxuICAgIHR5cGVKU09OID0gdHlwZS50b0pTT04oYWJyaWRnZWQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxUb0xhYmVsSlNPTihsYWJlbCkge1xuICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICByZXR1cm4gbGFiZWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVUb01ldGFUeXBlSlNPTihtZXRhVHlwZSkge1xuICBjb25zdCBtZXRhVHlwZUpTT04gPSAobWV0YVR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhVHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBtZXRhVHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04oZGVkdWN0aW9uKSB7XG4gIGNvbnN0IGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04oc2lnbmF0dXJlKSB7XG4gIGNvbnN0IHNpZ25hdHVyZUpTT04gPSAoc2lnbmF0dXJlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gc2lnbmF0dXJlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04ocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW9uYWxKU09OID0gcHJvdmlzaW9uYWw7ICAvLy9cblxuICByZXR1cm4gcHJvdmlzaW9uYWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04obW5lbWljQ29udGV4dCkge1xuICBjb25zdCBtbmVtaWNDb250ZXh0SlNPTiA9IG1uZW1pY0NvbnRleHQudG9KU09OKCk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbkpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IFRlcm1TdWJzdGl0dXRpb24sIEZyYW1lU3Vic3RpdHV0aW9uLCBTdGF0ZW1lbnRTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBUZXJtU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgIHx8IEZyYW1lU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0YXRlbWVudFN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNUb1R5cGVzSlNPTih0eXBlcykge1xuICBjb25zdCB0eXBlc0pTT04gPSB0eXBlcy5tYXAoKHR5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdHlwZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1RvVGVybXNKU09OKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zSlNPTiA9IHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICAgIHJldHVybiB0ZXJtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtzVG9MaW5rc0pTT04obGlua3MpIHtcbiAgY29uc3QgbGlua3NKU09OID0gbGlua3MubWFwKChsaW5rKSA9PiB7XG4gICAgY29uc3QgbGlua0pTT04gPSBsaW5rLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxpbmtKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGlua3NKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNUb1J1bGVzSlNPTihydWxlcykge1xuICBjb25zdCBydWxlc0pTT04gPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICBjb25zdCBydWxlSlNPTiA9IHJ1bGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcnVsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBydWxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNUb0xhYmVsc0pTT04obGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHMubWFwKChsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVsc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNUb0ZyYW1lc0pTT04oZnJhbWVzKSB7XG4gIGNvbnN0IGZyYW1lc0pTT04gPSBmcmFtZXMubWFwKChmcmFtZSkgPT4ge1xuICAgIGNvbnN0IGZyYW1lSlNPTiA9IGZyYW1lLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGZyYW1lSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNUb0F4aW9tc0pTT04oYXhpb21zKSB7XG4gIGNvbnN0IGF4aW9tc0pTT04gPSBheGlvbXMubWFwKChheGlvbSkgPT4ge1xuICAgIGNvbnN0IGF4aW9tSlNPTiA9IGF4aW9tLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGF4aW9tSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFzVG9TY2hlbWFzSlNPTihzY2hlbWFzKSB7XG4gIGNvbnN0IHNjaGVtYXNKU09OID0gc2NoZW1hcy5tYXAoKHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYUpTT04gPSBzY2hlbWEudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc2NoZW1hSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHNjaGVtYXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiB0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04ocHJlZml4bmFtZSkge1xuICBjb25zdCBwcmVmaXhOYW1lSlNPTiA9IHByZWZpeG5hbWU7ICAvLy9cblxuICByZXR1cm4gcHJlZml4TmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTihzdXBlclR5cGVzKSB7XG4gIGNvbnN0IHN1cGVyVHlwZXNKU09OID0gc3VwZXJUeXBlcy5tYXAoKHN1cGVyVHlwZSkgPT4ge1xuICAgIGNvbnN0IGFicmlkZ2VkID0gdHJ1ZSxcbiAgICAgIHN1cGVyVHlwZUpTT04gPSBzdXBlclR5cGUudG9KU09OKGFicmlkZ2VkKTtcblxuICAgIHJldHVybiBzdXBlclR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTihlcXVhbGl0aWVzKSB7XG4gIGNvbnN0IGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllcy5tYXAoKGVxdWFsaXR5KSA9PiB7XG4gICAgY29uc3QgZXF1YWxpdHlKU09OID0gZXF1YWxpdHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTihzdGF0ZW1lbnRzKSB7XG4gIGNvbnN0IHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50cy5tYXAoKHN0YXRlbWVudCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04oYXNzZXJ0aW9ucykge1xuICBjb25zdCBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnMubWFwKChhc3NlcnRpb24pID0+IHtcbiAgICBjb25zdCBhc3NlcnRpb25KU09OID0gYXNzZXJ0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRvcnNUb0dlbmVyYXRvcnNKU09OKGdlbmVyYXRvcnMpIHtcbiAgY29uc3QgZ2VuZXJhdG9yc0pTT04gPSBnZW5lcmF0b3JzLm1hcCgoZ2VuZXJhdG9yKSA9PiB7XG4gICAgY29uc3QgZ2VuZXJhdG9ySlNPTiA9IGdlbmVyYXRvci50b0pTT04oKTtcblxuICAgIHJldHVybiBnZW5lcmF0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gZ2VuZXJhdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJhaW50c1RvQ29uc3RyYWludHNKU09OKGNvbnN0cmFpbnRzKSB7XG4gIGNvbnN0IGNvbnN0cmFpbnRzSlNPTiA9IGNvbnN0cmFpbnRzLm1hcCgoY29uc3RyYWludCkgPT4ge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRKU09OID0gY29uc3RyYWludC50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25zdHJhaW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cmFpbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04oY29uamVjdHVyZXMpIHtcbiAgY29uc3QgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXMubWFwKChjb25qZWN0dXJlKSA9PiB7XG4gICAgY29uc3QgY29uamVjdHVyZUpTT04gPSBjb25qZWN0dXJlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmVKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTihjb21iaW5hdG9ycykge1xuICBjb25zdCBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9ycy5tYXAoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBjb25zdCBjb21iaW5hdG9ySlNPTiA9IGNvbWJpbmF0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OKGFzc3VtcHRpb25zKSB7XG4gIGNvbnN0IGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zLm1hcCgoYXNzdW1wdGlvbikgPT4ge1xuICAgIGNvbnN0IGFzc3VtcHRpb25KU09OID0gYXNzdW1wdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTihzdXBwb3NpdGlvbnMpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9ucy5tYXAoKHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25KU09OID0gc3VwcG9zaXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTihjb25zdHJ1Y3RvcnMpIHtcbiAgY29uc3QgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9ycy5tYXAoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgY29uc3QgY29uc3RydWN0b3JKU09OID0gY29uc3RydWN0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTih0eXBlUHJlZml4ZXMpIHtcbiAgY29uc3QgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlcy5tYXAoKHR5cGVQcmVmaXgpID0+IHtcbiAgICBjb25zdCB0eXBlUHJlZml4SlNPTiA9IHR5cGVQcmVmaXgudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeEpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc1RvU3Vic3RpdHV0aW9uc0pTT04oc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnMubWFwKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25KU09OID0gc3Vic3RpdHV0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OKG1ldGF2YXJpYWJsZXMpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzLm1hcCgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c1RvTW5lbWljQ29udGV4dHNKU09OKG1uZW1pY0NvbnRleHRzKSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzSlNPTiA9IG1uZW1pY0NvbnRleHRzLm1hcCgobW5lbWljQ29udGV4dCkgPT4ge1xuICAgIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04oZGVjbGFyZWRWYXJpYWJsZXMpIHtcbiAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXMubWFwKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZUpTT04gPSBkZWNsYXJlZFZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OKGRlY2xhcmVkTWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzLm1hcCgoZGVjbGFyZWRNZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OO1xufVxuXG5mdW5jdGlvbiBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCkge1xuICBjb25zdCBtZXRhVHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cbiJdLCJuYW1lcyI6WyJhc3NlcnRpb25zRnJvbUpTT04iLCJhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTiIsImFzc3VtcHRpb25zRnJvbUpTT04iLCJhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OIiwiYXhpb21zRnJvbUpTT04iLCJheGlvbXNUb0F4aW9tc0pTT04iLCJjb21iaW5hdG9yc0Zyb21KU09OIiwiY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTiIsImNvbmNsdXNpb25Gcm9tSlNPTiIsImNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OIiwiY29uamVjdHVyZXNGcm9tSlNPTiIsImNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04iLCJjb25zdHJhaW50c0Zyb21KU09OIiwiY29uc3RyYWludHNUb0NvbnN0cmFpbnRzSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZFZhcmlhYmxlc0Zyb21KU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNUb0RlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwiZXF1YWxpdGllc0Zyb21KU09OIiwiZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04iLCJmcmFtZXNGcm9tSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImdlbmVyYXRvcnNGcm9tSlNPTiIsImdlbmVyYXRvcnNUb0dlbmVyYXRvcnNKU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibGlua3NGcm9tSlNPTiIsImxpbmtzVG9MaW5rc0pTT04iLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwibW5lbWljQ29udGV4dEZyb21KU09OIiwibW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04iLCJtbmVtaWNDb250ZXh0c0Zyb21KU09OIiwibW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTiIsInByZWZpeE5hbWVGcm9tSlNPTiIsInByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9wZXJ0aWVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzY2hlbWFzRnJvbUpTT04iLCJzY2hlbWFzVG9TY2hlbWFzSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwic3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04iLCJzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1zRnJvbUpTT04iLCJ0ZXJtc1RvVGVybXNKU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsInR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTiIsInR5cGVUb1R5cGVKU09OIiwidHlwZXNGcm9tSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJqc29uIiwiY29udGV4dCIsInR5cGUiLCJzdHJpbmciLCJuYW1lIiwiZmluZFR5cGVCeU5hbWUiLCJsYWJlbCIsIkxhYmVsIiwiZWxlbWVudHMiLCJsYWJlbEpTT04iLCJmcm9tSlNPTiIsIm1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlOYW1lIiwiZGVkdWN0aW9uIiwiRGVkdWN0aW9uIiwiZGVkdWN0aW9uSlNPTiIsInNpZ25hdHVyZSIsIlNpZ25hdHVyZSIsInNpZ25hdHVyZUpTT04iLCJjb25jbHVzaW9uIiwiQ29uY2x1c2lvbiIsImNvbmNsdXNpb25KU09OIiwicHJvdmlzaW9uYWwiLCJyZWxlYXNlQ29udGV4dCIsIm1uZW1pY0NvbnRleHQiLCJNbmVtaWNDb250ZXh0IiwidHlwZXMiLCJ0eXBlc0pTT04iLCJUeXBlIiwiZm9yRWFjaCIsInR5cGVKU09OIiwicHVzaCIsInRlcm1zIiwiVGVybSIsInRlcm1zSlNPTiIsIm1hcCIsInRlcm1KU09OIiwidGVybSIsImxpbmtzIiwiTGluayIsImxpbmtzSlNPTiIsImxpbmtKU09OIiwibGluayIsInJ1bGVzIiwiUnVsZSIsInJ1bGVzSlNPTiIsInJ1bGVKU09OIiwicnVsZSIsImZyYW1lcyIsIkZyYW1lIiwiZnJhbWVzSlNPTiIsImZyYW1lSlNPTiIsImZyYW1lIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwic2NoZW1hcyIsIlNjaGVtYSIsInNjaGVtYXNKU09OIiwic2NoZW1hSlNPTiIsInNjaGVtYSIsInByZW1pc2VzIiwiUHJlbWlzZSIsInByZW1pc2VzSlNPTiIsInByZW1pc2VKU09OIiwicHJlbWlzZSIsInRoZW9yZW1zIiwiVGhlb3JlbSIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1KU09OIiwidGhlb3JlbSIsImVxdWFsaXRpZXMiLCJFcXVhbGl0eSIsImVxdWFsaXRpZXNKU09OIiwiZXF1YWxpdHlKU09OIiwiZXF1YWxpdHkiLCJwcm9wZXJ0aWVzIiwiUHJvcGVydHkiLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5SlNPTiIsInByb3BlcnR5IiwicHJlZml4TmFtZSIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZUpTT04iLCJzdXBlclR5cGUiLCJoeXBvdGhlc2VzIiwiSHlwb3RoZXNpcyIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNpc0pTT04iLCJoeXBvdGhlc2lzIiwic3RhdGVtZW50cyIsIlN0YXRlbWVudCIsInN0YXRlbWVudHNKU09OIiwic3RhdGVtZW50SlNPTiIsInN0YXRlbWVudCIsImFzc2VydGlvbnMiLCJUeXBlQXNzZXJ0aW9uIiwiU2NoZW1hQXNzZXJ0aW9uIiwiRGVmaW5lZEFzc2VydGlvbiIsIlByb3BlcnR5QXNzZXJ0aW9uIiwiU3VicHJvb2ZBc3NlcnRpb24iLCJDb250YWluZWRBc3NlcnRpb24iLCJTaWduYXR1cmVBc3NlcnRpb24iLCJhc3NlcnRpb25zSlNPTiIsImFzc2VydGlvbkpTT04iLCJhc3NlcnRpb24iLCJnZW5lcmF0b3JzIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yc0pTT04iLCJnZW5lcmF0b3JKU09OIiwiZ2VuZXJhdG9yIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiYXNzdW1wdGlvbnMiLCJBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbnNKU09OIiwiYXNzdW1wdGlvbkpTT04iLCJhc3N1bXB0aW9uIiwiY29uc3RyYWludHMiLCJDb25zdHJhaW50IiwiY29uc3RyYWludHNKU09OIiwiY29uc3RyYWludEpTT04iLCJjb25zdHJhaW50IiwidHlwZVByZWZpeGVzIiwiVHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4SlNPTiIsInR5cGVQcmVmaXgiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnNKU09OIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVzSlNPTiIsIm1ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGUiLCJjb250ZXh0cyIsIm1uZW1pY0NvbnRleHRzIiwiZGVjbGFyZWRWYXJpYWJsZXMiLCJWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwiYWJyaWRnZWQiLCJ0b0pTT04iLCJtZXRhVHlwZUpTT04iLCJwcm92aXNpb25hbEpTT04iLCJtbmVtaWNDb250ZXh0SlNPTiIsIlRlcm1TdWJzdGl0dXRpb24iLCJGcmFtZVN1YnN0aXR1dGlvbiIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsInByZWZpeG5hbWUiLCJwcmVmaXhOYW1lSlNPTiIsIm1uZW1pY0NvbnRleHRzSlNPTiIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWdXZ0JBO2VBQUFBOztRQXljQUM7ZUFBQUE7O1FBbllBQztlQUFBQTs7UUFxYkFDO2VBQUFBOztRQWpwQkFDO2VBQUFBOztRQThmQUM7ZUFBQUE7O1FBbFRBQztlQUFBQTs7UUEyYkFDO2VBQUFBOztRQXJ3QkFDO2VBQUFBOztRQXFpQkFDO2VBQUFBOztRQTNPQUM7ZUFBQUE7O1FBaWNBQztlQUFBQTs7UUFqWkFDO2VBQUFBOztRQXVZQUM7ZUFBQUE7O1FBdldBQztlQUFBQTs7UUF5WkFDO2VBQUFBOztRQXZUQUM7ZUFBQUE7O1FBbVhBQztlQUFBQTs7UUFwWUFDO2VBQUFBOztRQTBYQUM7ZUFBQUE7O1FBajNCQUM7ZUFBQUE7O1FBbWpCQUM7ZUFBQUE7O1FBelZBQztlQUFBQTs7UUEyZ0JBQztlQUFBQTs7UUEzbUJBQztlQUFBQTs7UUFvaEJBQztlQUFBQTs7UUF4VUFDO2VBQUFBOztRQTZiQUM7ZUFBQUE7O1FBbmZBQztlQUFBQTs7UUFnYkFDO2VBQUFBOztRQTV0QkFDO2VBQUFBOztRQWlrQkFDO2VBQUFBOztRQTNaQUM7ZUFBQUE7O1FBMGZBQztlQUFBQTs7UUExaUJBQztlQUFBQTs7UUFzaEJBQztlQUFBQTs7UUEvbkJBQztlQUFBQTs7UUEwakJBQztlQUFBQTs7UUF0RkFDO2VBQUFBOztRQXdZQUM7ZUFBQUE7O1FBOXlCQUM7ZUFBQUE7O1FBOGhCQUM7ZUFBQUE7O1FBeEdBQztlQUFBQTs7UUFrWUFDO2VBQUFBOztRQTdtQkFDO2VBQUFBOztRQWdkQUM7ZUFBQUE7O1FBaGhCQUM7ZUFBQUE7O1FBa2ZBQztlQUFBQTs7UUFsY0FDO2VBQUFBOztRQWlmQUM7ZUFBQUE7O1FBbHJCQUM7ZUFBQUE7O1FBOGhCQUM7ZUFBQUE7O1FBN2RBQztlQUFBQTs7UUFnaEJB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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-nominal",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.558",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-nominal",
|
|
7
7
|
"description": "Occam's Nominal language.",
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.6.3",
|
|
14
|
-
"occam-furtle": "^3.0.
|
|
14
|
+
"occam-furtle": "^3.0.504",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.25",
|
|
16
|
-
"occam-languages": "^3.0.
|
|
16
|
+
"occam-languages": "^3.0.72",
|
|
17
17
|
"occam-query": "^4.1.208"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"juxtapose": "^4.0.143",
|
|
28
28
|
"lively-cli": "^3.0.3",
|
|
29
29
|
"occam-lexers": "^23.2.10",
|
|
30
|
-
"occam-model": "^1.0.
|
|
30
|
+
"occam-model": "^1.0.588",
|
|
31
31
|
"occam-parsers": "^23.2.15",
|
|
32
|
-
"occam-server": "^7.0.
|
|
32
|
+
"occam-server": "^7.0.88",
|
|
33
33
|
"watchful-cli": "^1.7.102"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
import { Element, breakPointUtilities, continuationUtilities } from "occam-languages";
|
|
4
4
|
|
|
5
5
|
import { define } from "../elements";
|
|
6
|
-
import { instantiate } from "../utilities/context";
|
|
7
|
-
import { join, reconcile } from "../utilities/context";
|
|
8
6
|
import { isDerived, isDeclared } from "../utilities/state";
|
|
9
7
|
import { instantiateAssumption } from "../process/instantiate";
|
|
8
|
+
import { join, isolate, reconcile, instantiate } from "../utilities/context";
|
|
10
9
|
|
|
11
|
-
const { all, exists, backwardsEvery } = continuationUtilities,
|
|
10
|
+
const { all, some, exists, backwardsEvery } = continuationUtilities,
|
|
12
11
|
{ breakPointFromJSON, breakPointToBreakPointJSON } = breakPointUtilities;
|
|
13
12
|
|
|
14
13
|
export default define(class Assumption extends Element {
|
|
@@ -120,16 +119,18 @@ export default define(class Assumption extends Element {
|
|
|
120
119
|
|
|
121
120
|
context.trace(`Validating the '${assumptionString}' declared assumption...`);
|
|
122
121
|
|
|
123
|
-
|
|
122
|
+
const schemas = context.getSchemas();
|
|
124
123
|
|
|
125
|
-
|
|
124
|
+
return some(schemas, (schema, context, forward, back) => {
|
|
125
|
+
return this.unifySchema(schema, context, forward, back);
|
|
126
|
+
}, context, (context, back) => {
|
|
127
|
+
context.debug(`...validated the '${assumptionString}' declared assumption.`);
|
|
126
128
|
|
|
127
|
-
|
|
129
|
+
return forward(state, context, back);
|
|
130
|
+
}, back);
|
|
128
131
|
}
|
|
129
132
|
|
|
130
133
|
validateWhenDerived(state, context, forward, back) {
|
|
131
|
-
let validatesWhenDerived = false;
|
|
132
|
-
|
|
133
134
|
const derived = isDerived(state);
|
|
134
135
|
|
|
135
136
|
if (!derived) {
|
|
@@ -140,29 +141,11 @@ export default define(class Assumption extends Element {
|
|
|
140
141
|
|
|
141
142
|
context.trace(`Validating the '${assumptionString}' derived assumption...`);
|
|
142
143
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
validatesWhenDerived = some(schemas, (schema, context) => {
|
|
146
|
-
let success = false;
|
|
147
|
-
|
|
148
|
-
this.unifySchema(schema, context, (schemaUnifies) => {
|
|
149
|
-
if (schemaUnifies) {
|
|
150
|
-
success = true;
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
return success;
|
|
155
|
-
}, context, (context) => true); ///
|
|
156
|
-
|
|
157
|
-
if (validatesWhenDerived) {
|
|
158
|
-
validatesWhenDerived = continuation(state, context);
|
|
159
|
-
}
|
|
144
|
+
///
|
|
160
145
|
|
|
161
|
-
|
|
162
|
-
context.debug(`...validated the '${assumptionString}' derived assumption.`);
|
|
163
|
-
}
|
|
146
|
+
context.debug(`...validated the '${assumptionString}' derived assumption.`);
|
|
164
147
|
|
|
165
|
-
return
|
|
148
|
+
return forward(state, context, back);
|
|
166
149
|
}
|
|
167
150
|
|
|
168
151
|
validateLink(state, context, forward, back) {
|
|
@@ -199,56 +182,40 @@ export default define(class Assumption extends Element {
|
|
|
199
182
|
|
|
200
183
|
context.trace(`Unifying the '${schemaString}' schema with the '${assumptionString}' assumption...`);
|
|
201
184
|
|
|
202
|
-
|
|
185
|
+
return isolate((schema, context, forward, back) => {
|
|
186
|
+
const generalContext = context; ///
|
|
203
187
|
|
|
204
|
-
|
|
205
|
-
|
|
188
|
+
return reconcile((context) => {
|
|
189
|
+
const label = schema.getLabel();
|
|
206
190
|
|
|
207
|
-
|
|
208
|
-
|
|
191
|
+
return this.link.unifyLabel(label, context, (context, back) => {
|
|
192
|
+
const specificContext = context; ///
|
|
209
193
|
|
|
210
|
-
|
|
211
|
-
|
|
194
|
+
const deduction = schema.getDeduction(),
|
|
195
|
+
deducedStatement = this.findDeducedStatement(context);
|
|
212
196
|
|
|
213
|
-
return
|
|
214
|
-
|
|
197
|
+
return this.unifyDeduction(deduction, deducedStatement, generalContext, specificContext, (generalContext, specificContext, back) => {
|
|
198
|
+
const conditional = this.isConditional(),
|
|
199
|
+
schemaConditional = schema.isConditional();
|
|
215
200
|
|
|
216
|
-
|
|
217
|
-
|
|
201
|
+
if (conditional !== schemaConditional) {
|
|
202
|
+
context.trace(`Either the '${schemaString}' schema is unconditional whilst the '${assumptionString}' assumption is conditional or vice verse.`);
|
|
218
203
|
|
|
219
|
-
|
|
220
|
-
let schemaUnifies = false;
|
|
221
|
-
|
|
222
|
-
if (!deductionUnifies) {
|
|
223
|
-
return continuation(schemaUnifies);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
const conditional = this.isConditional(),
|
|
227
|
-
schemaConditional = schema.isConditional();
|
|
228
|
-
|
|
229
|
-
if (conditional !== schemaConditional) {
|
|
230
|
-
context.trace(`Either the '${schemaString}' schema is unconditional whilst the '${assumptionString}' assumption is conditional or vice verse.`);
|
|
231
|
-
|
|
232
|
-
return continuation(schemaUnifies);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
const suppositions = schema.getSuppositions(),
|
|
236
|
-
supposedStatements = this.findSupposedStatements(context);
|
|
237
|
-
|
|
238
|
-
return this.unifySuppositions(suppositions, supposedStatements, generalContext, specificContext, (suppositionsUnify) => {
|
|
239
|
-
if (suppositionsUnify) {
|
|
240
|
-
schemaUnifies = true;
|
|
204
|
+
return back();
|
|
241
205
|
}
|
|
242
206
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
}
|
|
207
|
+
const suppositions = schema.getSuppositions(),
|
|
208
|
+
supposedStatements = this.findSupposedStatements(context);
|
|
246
209
|
|
|
247
|
-
return
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
}, context)
|
|
210
|
+
return this.unifySuppositions(suppositions, supposedStatements, generalContext, specificContext, forward, back);
|
|
211
|
+
}, back);
|
|
212
|
+
}, back);
|
|
213
|
+
}, context);
|
|
214
|
+
}, schema, context, (schema, context, back) => {
|
|
215
|
+
context.debug(`...unified the '${schemaString}' schema with the '${assumptionString}' assumption.`);
|
|
216
|
+
|
|
217
|
+
return forward(context, back);
|
|
218
|
+
}, back);
|
|
252
219
|
}
|
|
253
220
|
|
|
254
221
|
unifyDeduction(deduction, deducedStatement, generalContext, specificContext, forward, back) {
|
|
@@ -306,16 +273,10 @@ export default define(class Assumption extends Element {
|
|
|
306
273
|
supposedStatementsLength = supposedStatements.length;
|
|
307
274
|
|
|
308
275
|
if (suppositionsLength !== supposedStatementsLength) {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
return continuation(suppositionsUnify);
|
|
276
|
+
return back();
|
|
312
277
|
}
|
|
313
278
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
return backwardsEvery(suppositions, (supposition, forward, back) => {
|
|
317
|
-
index--;
|
|
318
|
-
|
|
279
|
+
return backwardsEvery(suppositions, (supposition, forward, back, index) => {
|
|
319
280
|
const supposedStatement = supposedStatements[index];
|
|
320
281
|
|
|
321
282
|
return this.unifySupposition(supposition, supposedStatement, generalContext, specificContext, forward, back);
|
package/src/element/link.js
CHANGED
|
@@ -173,19 +173,11 @@ export default define(class Link extends Element {
|
|
|
173
173
|
|
|
174
174
|
context.trace(`Unifying the '${metavariableString}' metavariable with the '${linkString}' link...`);
|
|
175
175
|
|
|
176
|
-
return this.metavariable.unifyMetavariableIntrinsically(metavariable, generalContext, specificContext, (
|
|
177
|
-
|
|
176
|
+
return this.metavariable.unifyMetavariableIntrinsically(metavariable, generalContext, specificContext, (generalContext, specificContext, back) => {
|
|
177
|
+
context.debug(`...unified the '${metavariableString}' metavariable with the '${linkString}' link.`);
|
|
178
178
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
if (metavariableUnifies) {
|
|
184
|
-
context.debug(`...unified the '${metavariableString}' metavariable with the '${linkString}' link.`);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
return continuation(metavariableUnifies);
|
|
188
|
-
});
|
|
179
|
+
return forward(generalContext, specificContext, back);
|
|
180
|
+
}, back);
|
|
189
181
|
}
|
|
190
182
|
|
|
191
183
|
toJSON() {
|
package/src/element/statement.js
CHANGED
|
@@ -10,8 +10,8 @@ import { dischargeStatements } from "../process/discharge";
|
|
|
10
10
|
import { instantiateStatement } from "../process/instantiate";
|
|
11
11
|
import { substitutionFromStatementNode } from "../utilities/element";
|
|
12
12
|
|
|
13
|
-
const {
|
|
14
|
-
{
|
|
13
|
+
const { unbreakable } = breakPointUtilities,
|
|
14
|
+
{ all, some, exists } = continuationUtilities;
|
|
15
15
|
|
|
16
16
|
export default define(class Statement extends Element {
|
|
17
17
|
constructor(context, string, node, breakPoint, substitution) {
|
|
@@ -266,7 +266,7 @@ export default define(class Statement extends Element {
|
|
|
266
266
|
return comparesToParamter;
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
-
validate(state, context, forward, back) {
|
|
269
|
+
validate = unbreakable( function(state, context, forward, back) {
|
|
270
270
|
let statement;
|
|
271
271
|
|
|
272
272
|
const statementString = this.getString(); ///
|
|
@@ -290,7 +290,7 @@ export default define(class Statement extends Element {
|
|
|
290
290
|
|
|
291
291
|
return forward(statement, context, back);
|
|
292
292
|
}, back);
|
|
293
|
-
}
|
|
293
|
+
});
|
|
294
294
|
|
|
295
295
|
discharge(generalContext, specificContext, forward, back) {
|
|
296
296
|
const context = specificContext, ///
|
|
@@ -429,17 +429,8 @@ export default define(class Statement extends Element {
|
|
|
429
429
|
|
|
430
430
|
const string = this.getString();
|
|
431
431
|
|
|
432
|
-
let breakPoint;
|
|
433
|
-
|
|
434
|
-
breakPoint = this.getBreakPoint();
|
|
435
|
-
|
|
436
|
-
const breakPointJSON = breakPointToBreakPointJSON(breakPoint);
|
|
437
|
-
|
|
438
|
-
breakPoint = breakPointJSON; ///
|
|
439
|
-
|
|
440
432
|
json = {
|
|
441
|
-
string
|
|
442
|
-
breakPoint
|
|
433
|
+
string
|
|
443
434
|
};
|
|
444
435
|
|
|
445
436
|
return json;
|
|
@@ -454,7 +445,7 @@ export default define(class Statement extends Element {
|
|
|
454
445
|
const { string } = json,
|
|
455
446
|
statementNode = instantiateStatement(string, context),
|
|
456
447
|
node = statementNode, ///
|
|
457
|
-
breakPoint =
|
|
448
|
+
breakPoint = null,
|
|
458
449
|
substitution = substitutionFromStatementNode(statementNode, context);
|
|
459
450
|
|
|
460
451
|
context = null;
|
package/src/element/subproof.js
CHANGED
|
@@ -146,9 +146,7 @@ export default define(class Subproof extends Element {
|
|
|
146
146
|
const suppositionsLength = this.suppositions.length;
|
|
147
147
|
|
|
148
148
|
if (suppositionsLength === 0) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return continuation(suppositionsVerify, context);
|
|
149
|
+
return back();
|
|
152
150
|
}
|
|
153
151
|
|
|
154
152
|
const subproofString = this.getString(); ///
|
package/src/element/term.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
|
-
import { Element, continuationUtilities } from "occam-languages";
|
|
4
|
+
import { Element, breakPointUtilities, continuationUtilities } from "occam-languages";
|
|
5
5
|
|
|
6
6
|
import { define } from "../elements";
|
|
7
7
|
import { instantiate } from "../utilities/context";
|
|
@@ -12,7 +12,8 @@ import { validateTerms, validateTermAsVariable } from "../process/validation";
|
|
|
12
12
|
import { typeFromJSON, typeToTypeJSON, provisionalFromJSON, provisionalToProvisionalJSON } from "../utilities/json";
|
|
13
13
|
|
|
14
14
|
const { filter } = arrayUtilities,
|
|
15
|
-
{ exists } = continuationUtilities
|
|
15
|
+
{ exists } = continuationUtilities,
|
|
16
|
+
{ unbreakable } = breakPointUtilities;
|
|
16
17
|
|
|
17
18
|
export default define(class Term extends Element {
|
|
18
19
|
constructor(context, string, node, breakPoint, type, provisional) {
|
|
@@ -180,7 +181,7 @@ export default define(class Term extends Element {
|
|
|
180
181
|
return term;
|
|
181
182
|
}
|
|
182
183
|
|
|
183
|
-
validate(state, context, forward, back) {
|
|
184
|
+
validate = unbreakable(function (state, context, forward, back) {
|
|
184
185
|
let term;
|
|
185
186
|
|
|
186
187
|
const termString = this.getString(); ///
|
|
@@ -204,7 +205,7 @@ export default define(class Term extends Element {
|
|
|
204
205
|
|
|
205
206
|
return forward(term, context, back);
|
|
206
207
|
}, back);
|
|
207
|
-
}
|
|
208
|
+
});
|
|
208
209
|
|
|
209
210
|
validateGivenType(strict, type, state, context, forward, back) {
|
|
210
211
|
if (back === undefined) {
|
package/src/utilities/element.js
CHANGED
|
@@ -1310,13 +1310,6 @@ export function leftTermFromEqualityNode(equalityNode, context) {
|
|
|
1310
1310
|
return leftTerm;
|
|
1311
1311
|
}
|
|
1312
1312
|
|
|
1313
|
-
export function termsFromEquivalenceNode(equivalenceNode, context) {
|
|
1314
|
-
const termNodes = equivalenceNode.getTermNodes(),
|
|
1315
|
-
terms = termsFromTermNodes(termNodes, context);
|
|
1316
|
-
|
|
1317
|
-
return terms;
|
|
1318
|
-
}
|
|
1319
|
-
|
|
1320
1313
|
export function nameFromMetavariableNode(metavariableNode, context) {
|
|
1321
1314
|
const metametavariableName = metavariableNode.getMetavariableName(),
|
|
1322
1315
|
name = metametavariableName; ///
|
package/src/utilities/json.js
CHANGED
|
@@ -643,7 +643,9 @@ export function mnemicContextToMnemicContextJSON(mnemicContext) {
|
|
|
643
643
|
|
|
644
644
|
export function substitutionFromSubstitutionJSON(json, context) {
|
|
645
645
|
const { TermSubstitution, FrameSubstitution, StatementSubstitution } = elements,
|
|
646
|
-
substitution = TermSubstitution.fromJSON(json, context)
|
|
646
|
+
substitution = TermSubstitution.fromJSON(json, context)
|
|
647
|
+
|| FrameSubstitution.fromJSON(json, context)
|
|
648
|
+
|| StatementSubstitution.fromJSON(json, context);
|
|
647
649
|
|
|
648
650
|
return substitution;
|
|
649
651
|
}
|