semantifold 0.13.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/build/src/backends/effects.js +3 -1
- package/build/src/backends/php.d.ts.map +1 -1
- package/build/src/backends/php.js +56 -3
- package/build/src/backends/scalars.js +2 -2
- package/build/src/backends/shared.d.ts +2 -1
- package/build/src/backends/shared.d.ts.map +1 -1
- package/build/src/backends/shared.js +209 -7
- package/build/src/backends/writer.d.ts +18 -4
- package/build/src/backends/writer.d.ts.map +1 -1
- package/build/src/backends/writer.js +40 -4
- package/build/src/frontends/java.d.ts +1 -1
- package/build/src/frontends/java.d.ts.map +1 -1
- package/build/src/frontends/java.js +14 -11
- package/build/src/frontends/javascript-typescript.d.ts +1 -1
- package/build/src/frontends/javascript-typescript.d.ts.map +1 -1
- package/build/src/frontends/javascript-typescript.js +17 -17
- package/build/src/frontends/php.d.ts +5 -1
- package/build/src/frontends/php.d.ts.map +1 -1
- package/build/src/frontends/php.js +159 -31
- package/build/src/frontends/ruby.d.ts +1 -1
- package/build/src/frontends/ruby.d.ts.map +1 -1
- package/build/src/frontends/ruby.js +12 -9
- package/build/src/frontends/types.d.ts +9 -2
- package/build/src/frontends/types.d.ts.map +1 -1
- package/build/src/frontends/types.js +26 -9
- package/build/src/language-registry.d.ts.map +1 -1
- package/build/src/language-registry.js +14 -6
- package/build/src/mapping.d.ts.map +1 -1
- package/build/src/mapping.js +4 -2
- package/build/src/semantic/effects.d.ts.map +1 -1
- package/build/src/semantic/effects.js +3 -1
- package/build/src/semantic/provenance.d.ts.map +1 -1
- package/build/src/semantic/provenance.js +37 -4
- package/build/src/semantic/types.d.ts +140 -9
- package/build/src/semantic/types.d.ts.map +1 -1
- package/build/src/semantic/types.js +37 -6
- package/build/src/semantic/validate.d.ts +31 -2
- package/build/src/semantic/validate.d.ts.map +1 -1
- package/build/src/semantic/validate.js +346 -27
- package/docs/adr-bounded-subtyping.md +180 -0
- package/docs/language-support.md +1 -1
- package/package.json +1 -1
- package/src/backends/effects.js +1 -0
- package/src/backends/php.js +56 -2
- package/src/backends/scalars.js +1 -1
- package/src/backends/shared.js +210 -6
- package/src/backends/writer.js +41 -3
- package/src/frontends/java.js +13 -10
- package/src/frontends/javascript-typescript.js +16 -16
- package/src/frontends/php.js +175 -31
- package/src/frontends/ruby.js +11 -8
- package/src/frontends/types.js +26 -8
- package/src/language-registry.js +13 -5
- package/src/mapping.js +3 -1
- package/src/semantic/effects.js +1 -0
- package/src/semantic/provenance.js +34 -3
- package/src/semantic/types.js +39 -5
- package/src/semantic/validate.js +377 -26
|
@@ -34,7 +34,7 @@ export function emitScalarType(language, type) {
|
|
|
34
34
|
* @returns {string} Exact target spelling.
|
|
35
35
|
*/
|
|
36
36
|
export function emitSemanticType(language, type, javaBoxed = false) {
|
|
37
|
-
if (type.kind == "RecordType" || type.kind == "ReferenceType") {
|
|
37
|
+
if (type.kind == "RecordType" || type.kind == "ReferenceType" || type.kind == "InterfaceType") {
|
|
38
38
|
throw new TypeError("Nominal type emission requires declaration context.");
|
|
39
39
|
}
|
|
40
40
|
if (type.kind == "OwnedResourceType" || type.kind == "OwnedReferenceType") {
|
|
@@ -292,4 +292,4 @@ function emitKotlinString(value) {
|
|
|
292
292
|
}
|
|
293
293
|
return `${emitted}"`;
|
|
294
294
|
}
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGFycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZW5kcy9zY2FsYXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixvS0FBb0s7QUFDcEssTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3RDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3pGLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3RGLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3pGLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ3BGLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ25HLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDbEcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDekYsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDdEYsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDekYsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDNUYsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDbEcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDckYsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJ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QU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRWxFLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksTUFBTSxDQUFBO2FBQ25DLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksTUFBTSxDQUFBO2FBQ3hDLElBQUksU0FBUyxJQUFJLEdBQUc7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3RDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLElBQUksR0FBRztZQUFFLE9BQU8sSUFBSSxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFBOztZQUNsRyxPQUFPLElBQUksU0FBUyxDQUFBO0lBQzNCLENBQUM7SUFFRCxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUE7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKiogQHR5cGUge1JlYWRvbmx5PFJlY29yZDxpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5UZXh0QmFja2VuZExhbmd1YWdlLCBSZWFkb25seTxSZWNvcmQ8aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuRnVuY3Rpb25SZXR1cm5UeXBlTmFtZSwgc3RyaW5nPj4+Pn0gKi9cbmNvbnN0IHRhcmdldFNjYWxhclR5cGVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIHppZzogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sXCIsIGludGVnZXI6IFwiaTY0XCIsIHN0cmluZzogXCJbXWNvbnN0IHU4XCIsIHZvaWQ6IFwidm9pZFwifSksXG4gIGRhcnQ6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImludFwiLCBzdHJpbmc6IFwiU3RyaW5nXCIsIHZvaWQ6IFwidm9pZFwifSksXG4gIHN3aWZ0OiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcIkJvb2xcIiwgaW50ZWdlcjogXCJJbnQ2NFwiLCBzdHJpbmc6IFwiU3RyaW5nXCIsIHZvaWQ6IFwiVm9pZFwifSksXG4gIHJ1c3Q6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImk2NFwiLCBzdHJpbmc6IFwiU3RyaW5nXCIsIHZvaWQ6IFwiKClcIn0pLFxuICBjcHA6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcInN0ZDo6aW50NjRfdFwiLCBzdHJpbmc6IFwic3RkOjpzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgYzogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sXCIsIGludGVnZXI6IFwiaW50NjRfdFwiLCBzdHJpbmc6IFwiU2VtYW50aWZvbGRTdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgY3NoYXJwOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xcIiwgaW50ZWdlcjogXCJsb25nXCIsIHN0cmluZzogXCJzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgZ286IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImludDY0XCIsIHN0cmluZzogXCJzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgamF2YTogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sZWFuXCIsIGludGVnZXI6IFwiaW50XCIsIHN0cmluZzogXCJTdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAga290bGluOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcIkJvb2xlYW5cIiwgaW50ZWdlcjogXCJMb25nXCIsIHN0cmluZzogXCJTdHJpbmdcIiwgdm9pZDogXCJVbml0XCJ9KSxcbiAgamF2YXNjcmlwdDogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sZWFuXCIsIGludGVnZXI6IFwibnVtYmVyXCIsIHN0cmluZzogXCJzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgcGhwOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xcIiwgaW50ZWdlcjogXCJpbnRcIiwgc3RyaW5nOiBcInN0cmluZ1wiLCB2b2lkOiBcInZvaWRcIn0pLFxuICBweXRob246IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImludFwiLCBzdHJpbmc6IFwic3RyXCIsIHZvaWQ6IFwiTm9uZVwifSksXG4gIHJ1Ynk6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcIkludGVnZXJcIiwgc3RyaW5nOiBcIlN0cmluZ1wiLCB2b2lkOiBcInZvaWRcIn0pLFxuICB0eXBlc2NyaXB0OiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xlYW5cIiwgaW50ZWdlcjogXCJudW1iZXJcIiwgc3RyaW5nOiBcInN0cmluZ1wiLCB2b2lkOiBcInZvaWRcIn0pXG59KVxuXG4vKipcbiAqIEVtaXRzIG9uZSB0YXJnZXQtbGFuZ3VhZ2Ugc2NhbGFyIG9yIGZ1bmN0aW9uLXJldHVybiB0eXBlIHNwZWxsaW5nLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5UZXh0QmFja2VuZExhbmd1YWdlfSBsYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNGdW5jdGlvblJldHVyblR5cGV9IHR5cGUgLSBTZW1hbnRpYyB0eXBlLlxuICogQHJldHVybnMge3N0cmluZ30gVGFyZ2V0IHR5cGUgc3BlbGxpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0U2NhbGFyVHlwZShsYW5ndWFnZSwgdHlwZSkge1xuICByZXR1cm4gdHlwZS5raW5kID09IFwiVHlwZVJlZmVyZW5jZVwiID8gdGFyZ2V0U2NhbGFyVHlwZXNbbGFuZ3VhZ2VdW3R5cGUubmFtZV0gOiBcIlwiXG59XG5cbi8qKlxuICogRW1pdHMgb25lIHJlY3Vyc2l2ZWx5IHBhcmFtZXRlcml6ZWQgc2VtYW50aWMgdHlwZSBmb3IgdGhlIFRhc2sgMDA2IGNvaG9ydC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGV4dEJhY2tlbmRMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljRnVuY3Rpb25SZXR1cm5UeXBlfSB0eXBlIC0gU2VtYW50aWMgdHlwZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2phdmFCb3hlZF0gLSBXaGV0aGVyIEphdmEgc2NhbGFyIGFyZ3VtZW50cyByZXF1aXJlIGJveGVkIHNwZWxsaW5ncy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEV4YWN0IHRhcmdldCBzcGVsbGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtaXRTZW1hbnRpY1R5cGUobGFuZ3VhZ2UsIHR5cGUsIGphdmFCb3hlZCA9IGZhbHNlKSB7XG4gIGlmICh0eXBlLmtpbmQgPT0gXCJSZWNvcmRUeXBlXCIgfHwgdHlwZS5raW5kID09IFwiUmVmZXJlbmNlVHlwZVwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk5vbWluYWwgdHlwZSBlbWlzc2lvbiByZXF1aXJlcyBkZWNsYXJhdGlvbiBjb250ZXh0LlwiKVxuICB9XG4gIGlmICh0eXBlLmtpbmQgPT0gXCJPd25lZFJlc291cmNlVHlwZVwiIHx8IHR5cGUua2luZCA9PSBcIk93bmVkUmVmZXJlbmNlVHlwZVwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk93bmVkIHR5cGUgZW1pc3Npb24gcmVxdWlyZXMgZGVjbGFyYXRpb24gY29udGV4dC5cIilcbiAgfVxuICBpZiAodHlwZS5raW5kID09IFwiVHlwZVZhcmlhYmxlUmVmZXJlbmNlXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJUeXBlLXZhcmlhYmxlIGVtaXNzaW9uIHJlcXVpcmVzIGRlY2xhcmF0aW9uIGNvbnRleHQuXCIpXG4gIGlmICh0eXBlLmtpbmQgPT0gXCJPcHRpb25hbFR5cGVcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9wdGlvbmFsIHR5cGUgZW1pc3Npb24gcmVxdWlyZXMgdGFyZ2V0LXNwZWNpZmljIGNvbnRleHQuXCIpXG4gIGlmICh0eXBlLmtpbmQgPT0gXCJUeXBlUmVmZXJlbmNlXCIpIHtcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJqYXZhXCIgJiYgamF2YUJveGVkKSB7XG4gICAgICByZXR1cm4gdHlwZS5uYW1lID09IFwiaW50ZWdlclwiID8gXCJJbnRlZ2VyXCIgOiB0eXBlLm5hbWUgPT0gXCJib29sZWFuXCIgPyBcIkJvb2xlYW5cIiA6IHR5cGUubmFtZSA9PSBcInN0cmluZ1wiID8gXCJTdHJpbmdcIiA6IFwidm9pZFwiXG4gICAgfVxuXG4gICAgcmV0dXJuIGVtaXRTY2FsYXJUeXBlKGxhbmd1YWdlLCB0eXBlKVxuICB9XG5cbiAgY29uc3QgZWxlbWVudCA9IHR5cGUua2luZCA9PSBcIkxpc3RUeXBlXCIgPyB0eXBlLmVsZW1lbnRUeXBlIDogdHlwZS52YWx1ZVR5cGVcbiAgY29uc3QgbmVzdGVkID0gZW1pdFNlbWFudGljVHlwZShsYW5ndWFnZSwgZWxlbWVudCwgbGFuZ3VhZ2UgPT0gXCJqYXZhXCIpXG5cbiAgaWYgKHR5cGUua2luZCA9PSBcIkxpc3RUeXBlXCIpIHtcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJydWJ5XCIpIHJldHVybiBgQXJyYXlbJHtuZXN0ZWR9XWBcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJwaHBcIikgcmV0dXJuIGBsaXN0PCR7bmVzdGVkfT5gXG4gICAgaWYgKGxhbmd1YWdlID09IFwiamF2YXNjcmlwdFwiIHx8IGxhbmd1YWdlID09IFwidHlwZXNjcmlwdFwiKSByZXR1cm4gYFJlYWRvbmx5QXJyYXk8JHtuZXN0ZWR9PmBcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJqYXZhXCIpIHJldHVybiBgamF2YS51dGlsLkxpc3Q8JHtuZXN0ZWR9PmBcbiAgfSBlbHNlIHtcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJydWJ5XCIpIHJldHVybiBgSGFzaFtTdHJpbmcsJHtuZXN0ZWR9XWBcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJwaHBcIikgcmV0dXJuIGBhcnJheTxzdHJpbmcsJHtuZXN0ZWR9PmBcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJqYXZhc2NyaXB0XCIgfHwgbGFuZ3VhZ2UgPT0gXCJ0eXBlc2NyaXB0XCIpIHJldHVybiBgUmVhZG9ubHlNYXA8c3RyaW5nLCAke25lc3RlZH0+YFxuICAgIGlmIChsYW5ndWFnZSA9PSBcImphdmFcIikgcmV0dXJuIGBqYXZhLnV0aWwuTWFwPFN0cmluZywke25lc3RlZH0+YFxuICB9XG5cbiAgcmV0dXJuIFwiXCJcbn1cblxuLyoqXG4gKiBFbWl0cyBhIHNhZmVseSBlc2NhcGVkIHRhcmdldC1sYW5ndWFnZSBzdHJpbmcgbGl0ZXJhbC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGV4dEJhY2tlbmRMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBWYWxpZCBVbmljb2RlIHNjYWxhciBzdHJpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUYXJnZXQgc3RyaW5nIGxpdGVyYWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0U3RyaW5nTGl0ZXJhbChsYW5ndWFnZSwgdmFsdWUpIHtcbiAgaWYgKGxhbmd1YWdlID09IFwiZGFydFwiKSByZXR1cm4gZW1pdERhcnRTdHJpbmcodmFsdWUpXG4gIGlmIChsYW5ndWFnZSA9PSBcInN3aWZ0XCIpIHJldHVybiBlbWl0U3dpZnRTdHJpbmcodmFsdWUpXG4gIGlmIChsYW5ndWFnZSA9PSBcInBocFwiKSByZXR1cm4gZW1pdFBocFN0cmluZyh2YWx1ZSlcbiAgaWYgKGxhbmd1YWdlID09IFwicnVieVwiKSByZXR1cm4gZW1pdFJ1YnlTdHJpbmcodmFsdWUpXG4gIGlmIChsYW5ndWFnZSA9PSBcImphdmFcIikgcmV0dXJuIGVtaXRKYXZhU3RyaW5nKHZhbHVlKVxuICBpZiAobGFuZ3VhZ2UgPT0gXCJrb3RsaW5cIikgcmV0dXJuIGVtaXRLb3RsaW5TdHJpbmcodmFsdWUpXG5cbiAgY29uc3QgbGl0ZXJhbCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKVxuXG4gIGlmICh0eXBlb2YgbGl0ZXJhbCAhPSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQSB2YWxpZGF0ZWQgc2VtYW50aWMgc3RyaW5nIGRpZCBub3Qgc2VyaWFsaXplLlwiKVxuXG4gIGNvbnN0IGVzY2FwZWRMaW5lU2VwYXJhdG9ycyA9IGxpdGVyYWwucmVwbGFjZUFsbChcIlxcdTIwMjhcIiwgXCJcXFxcdTIwMjhcIikucmVwbGFjZUFsbChcIlxcdTIwMjlcIiwgXCJcXFxcdTIwMjlcIilcblxuICByZXR1cm4gbGFuZ3VhZ2UgPT0gXCJjc2hhcnBcIiA/IGVzY2FwZWRMaW5lU2VwYXJhdG9ycy5yZXBsYWNlQWxsKFwiXFx1MDA4NVwiLCBcIlxcXFx1MDA4NVwiKSA6IGVzY2FwZWRMaW5lU2VwYXJhdG9yc1xufVxuXG4vKipcbiAqIEVtaXRzIGFuIG9yZGluYXJ5IG5vbmludGVycG9sYXRlZCBEYXJ0IHN0cmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBWYWxpZCBVbmljb2RlIHNjYWxhciBzdHJpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBEYXJ0IHN0cmluZyBsaXRlcmFsLlxuICovXG5mdW5jdGlvbiBlbWl0RGFydFN0cmluZyh2YWx1ZSkge1xuICBsZXQgZW1pdHRlZCA9IFwiXFxcIlwiXG5cbiAgZm9yIChjb25zdCBjaGFyYWN0ZXIgb2YgdmFsdWUpIHtcbiAgICBjb25zdCBjb2RlUG9pbnQgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGNoYXJhY3Rlci5jb2RlUG9pbnRBdCgwKSlcblxuICAgIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFwiXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcIlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxcXFwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXFxcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIiRcIikgZW1pdHRlZCArPSBcIlxcXFwkXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXG5cIikgZW1pdHRlZCArPSBcIlxcXFxuXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHJcIikgZW1pdHRlZCArPSBcIlxcXFxyXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHRcIikgZW1pdHRlZCArPSBcIlxcXFx0XCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXGJcIikgZW1pdHRlZCArPSBcIlxcXFxiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXGZcIikgZW1pdHRlZCArPSBcIlxcXFxmXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHZcIikgZW1pdHRlZCArPSBcIlxcXFx2XCJcbiAgICBlbHNlIGlmIChjb2RlUG9pbnQgPCAzMiB8fCBjb2RlUG9pbnQgPT0gMTI3IHx8IGNvZGVQb2ludCA9PSAweDg1IHx8IGNvZGVQb2ludCA9PSAweDIwMjggfHwgY29kZVBvaW50ID09IDB4MjAyOSkge1xuICAgICAgZW1pdHRlZCArPSBgXFxcXHV7JHtjb2RlUG9pbnQudG9TdHJpbmcoMTYpfX1gXG4gICAgfSBlbHNlIGVtaXR0ZWQgKz0gY2hhcmFjdGVyXG4gIH1cbiAgcmV0dXJuIGAke2VtaXR0ZWR9XCJgXG59XG5cbi8qKlxuICogRW1pdHMgb25lIG5vbmludGVycG9sYXRlZCBTd2lmdCBzdHJpbmcgb3ZlciBVbmljb2RlIHNjYWxhciB2YWx1ZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBWYWxpZCBVbmljb2RlIHNjYWxhciBzdHJpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTd2lmdCBzdHJpbmcgbGl0ZXJhbC5cbiAqL1xuZnVuY3Rpb24gZW1pdFN3aWZ0U3RyaW5nKHZhbHVlKSB7XG4gIGxldCBlbWl0dGVkID0gXCJcXFwiXCJcblxuICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiB2YWx1ZSkge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApKVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PSBcIlxcXCJcIikgZW1pdHRlZCArPSBcIlxcXFxcXFwiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFxcXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcXFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxuXCIpIGVtaXR0ZWQgKz0gXCJcXFxcblwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxyXCIpIGVtaXR0ZWQgKz0gXCJcXFxcclwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx0XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdFwiXG4gICAgZWxzZSBpZiAoY29kZVBvaW50IDwgMzIgfHwgY29kZVBvaW50ID09IDEyNyB8fCBjb2RlUG9pbnQgPT0gMHg4NSB8fCBjb2RlUG9pbnQgPT0gMHgyMDI4IHx8IGNvZGVQb2ludCA9PSAweDIwMjkpIHtcbiAgICAgIGVtaXR0ZWQgKz0gYFxcXFx1eyR7Y29kZVBvaW50LnRvU3RyaW5nKDE2KX19YFxuICAgIH0gZWxzZSBlbWl0dGVkICs9IGNoYXJhY3RlclxuICB9XG5cbiAgcmV0dXJuIGAke2VtaXR0ZWR9XCJgXG59XG5cbi8qKlxuICogRW1pdHMgYSBQSFAgZG91YmxlLXF1b3RlZCBzdHJpbmcgd2hpbGUgcHJldmVudGluZyBpbnRlcnBvbGF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gUEhQIHN0cmluZyBsaXRlcmFsLlxuICovXG5mdW5jdGlvbiBlbWl0UGhwU3RyaW5nKHZhbHVlKSB7XG4gIGxldCBlbWl0dGVkID0gXCJcXFwiXCJcblxuICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiB2YWx1ZSkge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IGNoYXJhY3Rlci5jb2RlUG9pbnRBdCgwKVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PSBcIlxcXCJcIikgZW1pdHRlZCArPSBcIlxcXFxcXFwiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFxcXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcXFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiJFwiKSBlbWl0dGVkICs9IFwiXFxcXCRcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcblwiKSBlbWl0dGVkICs9IFwiXFxcXG5cIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcclwiKSBlbWl0dGVkICs9IFwiXFxcXHJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcdFwiKSBlbWl0dGVkICs9IFwiXFxcXHRcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcZlwiKSBlbWl0dGVkICs9IFwiXFxcXGZcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcdlwiKSBlbWl0dGVkICs9IFwiXFxcXHZcIlxuICAgIGVsc2UgaWYgKGNvZGVQb2ludCA9PSAyNykgZW1pdHRlZCArPSBcIlxcXFxlXCJcbiAgICBlbHNlIGlmIChjb2RlUG9pbnQgIT09IHVuZGVmaW5lZCAmJiAoY29kZVBvaW50IDwgMzIgfHwgY29kZVBvaW50ID09IDEyNykpIHtcbiAgICAgIGVtaXR0ZWQgKz0gYFxcXFx4JHtjb2RlUG9pbnQudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIFwiMFwiKX1gXG4gICAgfSBlbHNlIGVtaXR0ZWQgKz0gY2hhcmFjdGVyXG4gIH1cblxuICByZXR1cm4gYCR7ZW1pdHRlZH1cImBcbn1cblxuLyoqXG4gKiBFbWl0cyBhIFJ1YnkgZG91YmxlLXF1b3RlZCBzdHJpbmcgd2hpbGUgcHJldmVudGluZyBpbnRlcnBvbGF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gUnVieSBzdHJpbmcgbGl0ZXJhbC5cbiAqL1xuZnVuY3Rpb24gZW1pdFJ1YnlTdHJpbmcodmFsdWUpIHtcbiAgbGV0IGVtaXR0ZWQgPSBcIlxcXCJcIlxuXG4gIGZvciAoY29uc3QgY2hhcmFjdGVyIG9mIHZhbHVlKSB7XG4gICAgY29uc3QgY29kZVBvaW50ID0gY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApXG5cbiAgICBpZiAoY2hhcmFjdGVyID09IFwiXFxcIlwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXCJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcXFxcIikgZW1pdHRlZCArPSBcIlxcXFxcXFxcXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCIjXCIpIGVtaXR0ZWQgKz0gXCJcXFxcI1wiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxuXCIpIGVtaXR0ZWQgKz0gXCJcXFxcblwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxyXCIpIGVtaXR0ZWQgKz0gXCJcXFxcclwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx0XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxmXCIpIGVtaXR0ZWQgKz0gXCJcXFxcZlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx2XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdlwiXG4gICAgZWxzZSBpZiAoY29kZVBvaW50ID09IDI3KSBlbWl0dGVkICs9IFwiXFxcXGVcIlxuICAgIGVsc2UgaWYgKGNvZGVQb2ludCAhPT0gdW5kZWZpbmVkICYmIChjb2RlUG9pbnQgPCAzMiB8fCBjb2RlUG9pbnQgPT0gMTI3KSkge1xuICAgICAgZW1pdHRlZCArPSBgXFxcXHV7JHtjb2RlUG9pbnQudG9TdHJpbmcoMTYpfX1gXG4gICAgfSBlbHNlIGVtaXR0ZWQgKz0gY2hhcmFjdGVyXG4gIH1cblxuICByZXR1cm4gYCR7ZW1pdHRlZH1cImBcbn1cblxuLyoqXG4gKiBFbWl0cyBhIEphdmEgc3RyaW5nIHVzaW5nIHN0YW5kYXJkIG9yIGZpeGVkLXdpZHRoIG9jdGFsIGNvbnRyb2wgZXNjYXBlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFZhbGlkIFVuaWNvZGUgc2NhbGFyIHN0cmluZy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEphdmEgc3RyaW5nIGxpdGVyYWwuXG4gKi9cbmZ1bmN0aW9uIGVtaXRKYXZhU3RyaW5nKHZhbHVlKSB7XG4gIGxldCBlbWl0dGVkID0gXCJcXFwiXCJcblxuICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiB2YWx1ZSkge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IGNoYXJhY3Rlci5jb2RlUG9pbnRBdCgwKVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PSBcIlxcXCJcIikgZW1pdHRlZCArPSBcIlxcXFxcXFwiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFxcXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcXFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxiXCIpIGVtaXR0ZWQgKz0gXCJcXFxcYlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx0XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxuXCIpIGVtaXR0ZWQgKz0gXCJcXFxcblwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxmXCIpIGVtaXR0ZWQgKz0gXCJcXFxcZlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxyXCIpIGVtaXR0ZWQgKz0gXCJcXFxcclwiXG4gICAgZWxzZSBpZiAoY29kZVBvaW50ICE9PSB1bmRlZmluZWQgJiYgKGNvZGVQb2ludCA8IDMyIHx8IGNvZGVQb2ludCA9PSAxMjcpKSB7XG4gICAgICBlbWl0dGVkICs9IGBcXFxcJHtjb2RlUG9pbnQudG9TdHJpbmcoOCkucGFkU3RhcnQoMywgXCIwXCIpfWBcbiAgICB9IGVsc2UgZW1pdHRlZCArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIHJldHVybiBgJHtlbWl0dGVkfVwiYFxufVxuXG4vKipcbiAqIEVtaXRzIGFuIG9yZGluYXJ5IG5vbmludGVycG9sYXRlZCBLb3RsaW4gc3RyaW5nIG92ZXIgVW5pY29kZSBzY2FsYXIgdmFsdWVzLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gS290bGluIHN0cmluZyBsaXRlcmFsLlxuICovXG5mdW5jdGlvbiBlbWl0S290bGluU3RyaW5nKHZhbHVlKSB7XG4gIGxldCBlbWl0dGVkID0gXCJcXFwiXCJcblxuICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiB2YWx1ZSkge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApKVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PSBcIlxcXCJcIikgZW1pdHRlZCArPSBcIlxcXFxcXFwiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFxcXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcXFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiJFwiKSBlbWl0dGVkICs9IFwiXFxcXCRcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcYlwiKSBlbWl0dGVkICs9IFwiXFxcXGJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcdFwiKSBlbWl0dGVkICs9IFwiXFxcXHRcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcblwiKSBlbWl0dGVkICs9IFwiXFxcXG5cIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcclwiKSBlbWl0dGVkICs9IFwiXFxcXHJcIlxuICAgIGVsc2UgaWYgKGNvZGVQb2ludCA8IDMyIHx8IGNvZGVQb2ludCA9PSAxMjcpIGVtaXR0ZWQgKz0gYFxcXFx1JHtjb2RlUG9pbnQudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDQsIFwiMFwiKX1gXG4gICAgZWxzZSBlbWl0dGVkICs9IGNoYXJhY3RlclxuICB9XG5cbiAgcmV0dXJuIGAke2VtaXR0ZWR9XCJgXG59XG4iXX0=
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGFycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZW5kcy9zY2FsYXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixvS0FBb0s7QUFDcEssTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3RDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3pGLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3RGLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3pGLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ3BGLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ25HLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDbEcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDekYsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDdEYsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDekYsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDNUYsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDbEcsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDckYsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJ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UyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzlCLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRWxFLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksTUFBTSxDQUFBO2FBQ25DLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksTUFBTSxDQUFBO2FBQ3hDLElBQUksU0FBUyxJQUFJLEdBQUc7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3RDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksS0FBSyxDQUFBO2FBQ3ZDLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxTQUFTLElBQUksR0FBRztZQUFFLE9BQU8sSUFBSSxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFBOztZQUNsRyxPQUFPLElBQUksU0FBUyxDQUFBO0lBQzNCLENBQUM7SUFFRCxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUE7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKiogQHR5cGUge1JlYWRvbmx5PFJlY29yZDxpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5UZXh0QmFja2VuZExhbmd1YWdlLCBSZWFkb25seTxSZWNvcmQ8aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuRnVuY3Rpb25SZXR1cm5UeXBlTmFtZSwgc3RyaW5nPj4+Pn0gKi9cbmNvbnN0IHRhcmdldFNjYWxhclR5cGVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIHppZzogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sXCIsIGludGVnZXI6IFwiaTY0XCIsIHN0cmluZzogXCJbXWNvbnN0IHU4XCIsIHZvaWQ6IFwidm9pZFwifSksXG4gIGRhcnQ6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImludFwiLCBzdHJpbmc6IFwiU3RyaW5nXCIsIHZvaWQ6IFwidm9pZFwifSksXG4gIHN3aWZ0OiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcIkJvb2xcIiwgaW50ZWdlcjogXCJJbnQ2NFwiLCBzdHJpbmc6IFwiU3RyaW5nXCIsIHZvaWQ6IFwiVm9pZFwifSksXG4gIHJ1c3Q6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImk2NFwiLCBzdHJpbmc6IFwiU3RyaW5nXCIsIHZvaWQ6IFwiKClcIn0pLFxuICBjcHA6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcInN0ZDo6aW50NjRfdFwiLCBzdHJpbmc6IFwic3RkOjpzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgYzogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sXCIsIGludGVnZXI6IFwiaW50NjRfdFwiLCBzdHJpbmc6IFwiU2VtYW50aWZvbGRTdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgY3NoYXJwOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xcIiwgaW50ZWdlcjogXCJsb25nXCIsIHN0cmluZzogXCJzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgZ286IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImludDY0XCIsIHN0cmluZzogXCJzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgamF2YTogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sZWFuXCIsIGludGVnZXI6IFwiaW50XCIsIHN0cmluZzogXCJTdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAga290bGluOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcIkJvb2xlYW5cIiwgaW50ZWdlcjogXCJMb25nXCIsIHN0cmluZzogXCJTdHJpbmdcIiwgdm9pZDogXCJVbml0XCJ9KSxcbiAgamF2YXNjcmlwdDogT2JqZWN0LmZyZWV6ZSh7Ym9vbGVhbjogXCJib29sZWFuXCIsIGludGVnZXI6IFwibnVtYmVyXCIsIHN0cmluZzogXCJzdHJpbmdcIiwgdm9pZDogXCJ2b2lkXCJ9KSxcbiAgcGhwOiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xcIiwgaW50ZWdlcjogXCJpbnRcIiwgc3RyaW5nOiBcInN0cmluZ1wiLCB2b2lkOiBcInZvaWRcIn0pLFxuICBweXRob246IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcImludFwiLCBzdHJpbmc6IFwic3RyXCIsIHZvaWQ6IFwiTm9uZVwifSksXG4gIHJ1Ynk6IE9iamVjdC5mcmVlemUoe2Jvb2xlYW46IFwiYm9vbFwiLCBpbnRlZ2VyOiBcIkludGVnZXJcIiwgc3RyaW5nOiBcIlN0cmluZ1wiLCB2b2lkOiBcInZvaWRcIn0pLFxuICB0eXBlc2NyaXB0OiBPYmplY3QuZnJlZXplKHtib29sZWFuOiBcImJvb2xlYW5cIiwgaW50ZWdlcjogXCJudW1iZXJcIiwgc3RyaW5nOiBcInN0cmluZ1wiLCB2b2lkOiBcInZvaWRcIn0pXG59KVxuXG4vKipcbiAqIEVtaXRzIG9uZSB0YXJnZXQtbGFuZ3VhZ2Ugc2NhbGFyIG9yIGZ1bmN0aW9uLXJldHVybiB0eXBlIHNwZWxsaW5nLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5UZXh0QmFja2VuZExhbmd1YWdlfSBsYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNGdW5jdGlvblJldHVyblR5cGV9IHR5cGUgLSBTZW1hbnRpYyB0eXBlLlxuICogQHJldHVybnMge3N0cmluZ30gVGFyZ2V0IHR5cGUgc3BlbGxpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0U2NhbGFyVHlwZShsYW5ndWFnZSwgdHlwZSkge1xuICByZXR1cm4gdHlwZS5raW5kID09IFwiVHlwZVJlZmVyZW5jZVwiID8gdGFyZ2V0U2NhbGFyVHlwZXNbbGFuZ3VhZ2VdW3R5cGUubmFtZV0gOiBcIlwiXG59XG5cbi8qKlxuICogRW1pdHMgb25lIHJlY3Vyc2l2ZWx5IHBhcmFtZXRlcml6ZWQgc2VtYW50aWMgdHlwZSBmb3IgdGhlIFRhc2sgMDA2IGNvaG9ydC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGV4dEJhY2tlbmRMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljRnVuY3Rpb25SZXR1cm5UeXBlfSB0eXBlIC0gU2VtYW50aWMgdHlwZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2phdmFCb3hlZF0gLSBXaGV0aGVyIEphdmEgc2NhbGFyIGFyZ3VtZW50cyByZXF1aXJlIGJveGVkIHNwZWxsaW5ncy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEV4YWN0IHRhcmdldCBzcGVsbGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtaXRTZW1hbnRpY1R5cGUobGFuZ3VhZ2UsIHR5cGUsIGphdmFCb3hlZCA9IGZhbHNlKSB7XG4gIGlmICh0eXBlLmtpbmQgPT0gXCJSZWNvcmRUeXBlXCIgfHwgdHlwZS5raW5kID09IFwiUmVmZXJlbmNlVHlwZVwiIHx8IHR5cGUua2luZCA9PSBcIkludGVyZmFjZVR5cGVcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJOb21pbmFsIHR5cGUgZW1pc3Npb24gcmVxdWlyZXMgZGVjbGFyYXRpb24gY29udGV4dC5cIilcbiAgfVxuICBpZiAodHlwZS5raW5kID09IFwiT3duZWRSZXNvdXJjZVR5cGVcIiB8fCB0eXBlLmtpbmQgPT0gXCJPd25lZFJlZmVyZW5jZVR5cGVcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPd25lZCB0eXBlIGVtaXNzaW9uIHJlcXVpcmVzIGRlY2xhcmF0aW9uIGNvbnRleHQuXCIpXG4gIH1cbiAgaWYgKHR5cGUua2luZCA9PSBcIlR5cGVWYXJpYWJsZVJlZmVyZW5jZVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiVHlwZS12YXJpYWJsZSBlbWlzc2lvbiByZXF1aXJlcyBkZWNsYXJhdGlvbiBjb250ZXh0LlwiKVxuICBpZiAodHlwZS5raW5kID09IFwiT3B0aW9uYWxUeXBlXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPcHRpb25hbCB0eXBlIGVtaXNzaW9uIHJlcXVpcmVzIHRhcmdldC1zcGVjaWZpYyBjb250ZXh0LlwiKVxuICBpZiAodHlwZS5raW5kID09IFwiVHlwZVJlZmVyZW5jZVwiKSB7XG4gICAgaWYgKGxhbmd1YWdlID09IFwiamF2YVwiICYmIGphdmFCb3hlZCkge1xuICAgICAgcmV0dXJuIHR5cGUubmFtZSA9PSBcImludGVnZXJcIiA/IFwiSW50ZWdlclwiIDogdHlwZS5uYW1lID09IFwiYm9vbGVhblwiID8gXCJCb29sZWFuXCIgOiB0eXBlLm5hbWUgPT0gXCJzdHJpbmdcIiA/IFwiU3RyaW5nXCIgOiBcInZvaWRcIlxuICAgIH1cblxuICAgIHJldHVybiBlbWl0U2NhbGFyVHlwZShsYW5ndWFnZSwgdHlwZSlcbiAgfVxuXG4gIGNvbnN0IGVsZW1lbnQgPSB0eXBlLmtpbmQgPT0gXCJMaXN0VHlwZVwiID8gdHlwZS5lbGVtZW50VHlwZSA6IHR5cGUudmFsdWVUeXBlXG4gIGNvbnN0IG5lc3RlZCA9IGVtaXRTZW1hbnRpY1R5cGUobGFuZ3VhZ2UsIGVsZW1lbnQsIGxhbmd1YWdlID09IFwiamF2YVwiKVxuXG4gIGlmICh0eXBlLmtpbmQgPT0gXCJMaXN0VHlwZVwiKSB7XG4gICAgaWYgKGxhbmd1YWdlID09IFwicnVieVwiKSByZXR1cm4gYEFycmF5WyR7bmVzdGVkfV1gXG4gICAgaWYgKGxhbmd1YWdlID09IFwicGhwXCIpIHJldHVybiBgbGlzdDwke25lc3RlZH0+YFxuICAgIGlmIChsYW5ndWFnZSA9PSBcImphdmFzY3JpcHRcIiB8fCBsYW5ndWFnZSA9PSBcInR5cGVzY3JpcHRcIikgcmV0dXJuIGBSZWFkb25seUFycmF5PCR7bmVzdGVkfT5gXG4gICAgaWYgKGxhbmd1YWdlID09IFwiamF2YVwiKSByZXR1cm4gYGphdmEudXRpbC5MaXN0PCR7bmVzdGVkfT5gXG4gIH0gZWxzZSB7XG4gICAgaWYgKGxhbmd1YWdlID09IFwicnVieVwiKSByZXR1cm4gYEhhc2hbU3RyaW5nLCR7bmVzdGVkfV1gXG4gICAgaWYgKGxhbmd1YWdlID09IFwicGhwXCIpIHJldHVybiBgYXJyYXk8c3RyaW5nLCR7bmVzdGVkfT5gXG4gICAgaWYgKGxhbmd1YWdlID09IFwiamF2YXNjcmlwdFwiIHx8IGxhbmd1YWdlID09IFwidHlwZXNjcmlwdFwiKSByZXR1cm4gYFJlYWRvbmx5TWFwPHN0cmluZywgJHtuZXN0ZWR9PmBcbiAgICBpZiAobGFuZ3VhZ2UgPT0gXCJqYXZhXCIpIHJldHVybiBgamF2YS51dGlsLk1hcDxTdHJpbmcsJHtuZXN0ZWR9PmBcbiAgfVxuXG4gIHJldHVybiBcIlwiXG59XG5cbi8qKlxuICogRW1pdHMgYSBzYWZlbHkgZXNjYXBlZCB0YXJnZXQtbGFuZ3VhZ2Ugc3RyaW5nIGxpdGVyYWwuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlRleHRCYWNrZW5kTGFuZ3VhZ2V9IGxhbmd1YWdlIC0gVGFyZ2V0IGxhbmd1YWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gVGFyZ2V0IHN0cmluZyBsaXRlcmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1pdFN0cmluZ0xpdGVyYWwobGFuZ3VhZ2UsIHZhbHVlKSB7XG4gIGlmIChsYW5ndWFnZSA9PSBcImRhcnRcIikgcmV0dXJuIGVtaXREYXJ0U3RyaW5nKHZhbHVlKVxuICBpZiAobGFuZ3VhZ2UgPT0gXCJzd2lmdFwiKSByZXR1cm4gZW1pdFN3aWZ0U3RyaW5nKHZhbHVlKVxuICBpZiAobGFuZ3VhZ2UgPT0gXCJwaHBcIikgcmV0dXJuIGVtaXRQaHBTdHJpbmcodmFsdWUpXG4gIGlmIChsYW5ndWFnZSA9PSBcInJ1YnlcIikgcmV0dXJuIGVtaXRSdWJ5U3RyaW5nKHZhbHVlKVxuICBpZiAobGFuZ3VhZ2UgPT0gXCJqYXZhXCIpIHJldHVybiBlbWl0SmF2YVN0cmluZyh2YWx1ZSlcbiAgaWYgKGxhbmd1YWdlID09IFwia290bGluXCIpIHJldHVybiBlbWl0S290bGluU3RyaW5nKHZhbHVlKVxuXG4gIGNvbnN0IGxpdGVyYWwgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcblxuICBpZiAodHlwZW9mIGxpdGVyYWwgIT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkEgdmFsaWRhdGVkIHNlbWFudGljIHN0cmluZyBkaWQgbm90IHNlcmlhbGl6ZS5cIilcblxuICBjb25zdCBlc2NhcGVkTGluZVNlcGFyYXRvcnMgPSBsaXRlcmFsLnJlcGxhY2VBbGwoXCJcXHUyMDI4XCIsIFwiXFxcXHUyMDI4XCIpLnJlcGxhY2VBbGwoXCJcXHUyMDI5XCIsIFwiXFxcXHUyMDI5XCIpXG5cbiAgcmV0dXJuIGxhbmd1YWdlID09IFwiY3NoYXJwXCIgPyBlc2NhcGVkTGluZVNlcGFyYXRvcnMucmVwbGFjZUFsbChcIlxcdTAwODVcIiwgXCJcXFxcdTAwODVcIikgOiBlc2NhcGVkTGluZVNlcGFyYXRvcnNcbn1cblxuLyoqXG4gKiBFbWl0cyBhbiBvcmRpbmFyeSBub25pbnRlcnBvbGF0ZWQgRGFydCBzdHJpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gRGFydCBzdHJpbmcgbGl0ZXJhbC5cbiAqL1xuZnVuY3Rpb24gZW1pdERhcnRTdHJpbmcodmFsdWUpIHtcbiAgbGV0IGVtaXR0ZWQgPSBcIlxcXCJcIlxuXG4gIGZvciAoY29uc3QgY2hhcmFjdGVyIG9mIHZhbHVlKSB7XG4gICAgY29uc3QgY29kZVBvaW50ID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChjaGFyYWN0ZXIuY29kZVBvaW50QXQoMCkpXG5cbiAgICBpZiAoY2hhcmFjdGVyID09IFwiXFxcIlwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXCJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcXFxcIikgZW1pdHRlZCArPSBcIlxcXFxcXFxcXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCIkXCIpIGVtaXR0ZWQgKz0gXCJcXFxcJFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxuXCIpIGVtaXR0ZWQgKz0gXCJcXFxcblwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxyXCIpIGVtaXR0ZWQgKz0gXCJcXFxcclwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx0XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxiXCIpIGVtaXR0ZWQgKz0gXCJcXFxcYlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxmXCIpIGVtaXR0ZWQgKz0gXCJcXFxcZlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFx2XCIpIGVtaXR0ZWQgKz0gXCJcXFxcdlwiXG4gICAgZWxzZSBpZiAoY29kZVBvaW50IDwgMzIgfHwgY29kZVBvaW50ID09IDEyNyB8fCBjb2RlUG9pbnQgPT0gMHg4NSB8fCBjb2RlUG9pbnQgPT0gMHgyMDI4IHx8IGNvZGVQb2ludCA9PSAweDIwMjkpIHtcbiAgICAgIGVtaXR0ZWQgKz0gYFxcXFx1eyR7Y29kZVBvaW50LnRvU3RyaW5nKDE2KX19YFxuICAgIH0gZWxzZSBlbWl0dGVkICs9IGNoYXJhY3RlclxuICB9XG4gIHJldHVybiBgJHtlbWl0dGVkfVwiYFxufVxuXG4vKipcbiAqIEVtaXRzIG9uZSBub25pbnRlcnBvbGF0ZWQgU3dpZnQgc3RyaW5nIG92ZXIgVW5pY29kZSBzY2FsYXIgdmFsdWVzLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsaWQgVW5pY29kZSBzY2FsYXIgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gU3dpZnQgc3RyaW5nIGxpdGVyYWwuXG4gKi9cbmZ1bmN0aW9uIGVtaXRTd2lmdFN0cmluZyh2YWx1ZSkge1xuICBsZXQgZW1pdHRlZCA9IFwiXFxcIlwiXG5cbiAgZm9yIChjb25zdCBjaGFyYWN0ZXIgb2YgdmFsdWUpIHtcbiAgICBjb25zdCBjb2RlUG9pbnQgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGNoYXJhY3Rlci5jb2RlUG9pbnRBdCgwKSlcblxuICAgIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFwiXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcIlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxcXFwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXFxcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcblwiKSBlbWl0dGVkICs9IFwiXFxcXG5cIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcclwiKSBlbWl0dGVkICs9IFwiXFxcXHJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcdFwiKSBlbWl0dGVkICs9IFwiXFxcXHRcIlxuICAgIGVsc2UgaWYgKGNvZGVQb2ludCA8IDMyIHx8IGNvZGVQb2ludCA9PSAxMjcgfHwgY29kZVBvaW50ID09IDB4ODUgfHwgY29kZVBvaW50ID09IDB4MjAyOCB8fCBjb2RlUG9pbnQgPT0gMHgyMDI5KSB7XG4gICAgICBlbWl0dGVkICs9IGBcXFxcdXske2NvZGVQb2ludC50b1N0cmluZygxNil9fWBcbiAgICB9IGVsc2UgZW1pdHRlZCArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIHJldHVybiBgJHtlbWl0dGVkfVwiYFxufVxuXG4vKipcbiAqIEVtaXRzIGEgUEhQIGRvdWJsZS1xdW90ZWQgc3RyaW5nIHdoaWxlIHByZXZlbnRpbmcgaW50ZXJwb2xhdGlvbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFZhbGlkIFVuaWNvZGUgc2NhbGFyIHN0cmluZy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFBIUCBzdHJpbmcgbGl0ZXJhbC5cbiAqL1xuZnVuY3Rpb24gZW1pdFBocFN0cmluZyh2YWx1ZSkge1xuICBsZXQgZW1pdHRlZCA9IFwiXFxcIlwiXG5cbiAgZm9yIChjb25zdCBjaGFyYWN0ZXIgb2YgdmFsdWUpIHtcbiAgICBjb25zdCBjb2RlUG9pbnQgPSBjaGFyYWN0ZXIuY29kZVBvaW50QXQoMClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFwiXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcIlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxcXFwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXFxcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIiRcIikgZW1pdHRlZCArPSBcIlxcXFwkXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXG5cIikgZW1pdHRlZCArPSBcIlxcXFxuXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHJcIikgZW1pdHRlZCArPSBcIlxcXFxyXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHRcIikgZW1pdHRlZCArPSBcIlxcXFx0XCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXGZcIikgZW1pdHRlZCArPSBcIlxcXFxmXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHZcIikgZW1pdHRlZCArPSBcIlxcXFx2XCJcbiAgICBlbHNlIGlmIChjb2RlUG9pbnQgPT0gMjcpIGVtaXR0ZWQgKz0gXCJcXFxcZVwiXG4gICAgZWxzZSBpZiAoY29kZVBvaW50ICE9PSB1bmRlZmluZWQgJiYgKGNvZGVQb2ludCA8IDMyIHx8IGNvZGVQb2ludCA9PSAxMjcpKSB7XG4gICAgICBlbWl0dGVkICs9IGBcXFxceCR7Y29kZVBvaW50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCBcIjBcIil9YFxuICAgIH0gZWxzZSBlbWl0dGVkICs9IGNoYXJhY3RlclxuICB9XG5cbiAgcmV0dXJuIGAke2VtaXR0ZWR9XCJgXG59XG5cbi8qKlxuICogRW1pdHMgYSBSdWJ5IGRvdWJsZS1xdW90ZWQgc3RyaW5nIHdoaWxlIHByZXZlbnRpbmcgaW50ZXJwb2xhdGlvbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFZhbGlkIFVuaWNvZGUgc2NhbGFyIHN0cmluZy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJ1Ynkgc3RyaW5nIGxpdGVyYWwuXG4gKi9cbmZ1bmN0aW9uIGVtaXRSdWJ5U3RyaW5nKHZhbHVlKSB7XG4gIGxldCBlbWl0dGVkID0gXCJcXFwiXCJcblxuICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiB2YWx1ZSkge1xuICAgIGNvbnN0IGNvZGVQb2ludCA9IGNoYXJhY3Rlci5jb2RlUG9pbnRBdCgwKVxuXG4gICAgaWYgKGNoYXJhY3RlciA9PSBcIlxcXCJcIikgZW1pdHRlZCArPSBcIlxcXFxcXFwiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFxcXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcXFwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiI1wiKSBlbWl0dGVkICs9IFwiXFxcXCNcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcblwiKSBlbWl0dGVkICs9IFwiXFxcXG5cIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcclwiKSBlbWl0dGVkICs9IFwiXFxcXHJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcdFwiKSBlbWl0dGVkICs9IFwiXFxcXHRcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcZlwiKSBlbWl0dGVkICs9IFwiXFxcXGZcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcdlwiKSBlbWl0dGVkICs9IFwiXFxcXHZcIlxuICAgIGVsc2UgaWYgKGNvZGVQb2ludCA9PSAyNykgZW1pdHRlZCArPSBcIlxcXFxlXCJcbiAgICBlbHNlIGlmIChjb2RlUG9pbnQgIT09IHVuZGVmaW5lZCAmJiAoY29kZVBvaW50IDwgMzIgfHwgY29kZVBvaW50ID09IDEyNykpIHtcbiAgICAgIGVtaXR0ZWQgKz0gYFxcXFx1eyR7Y29kZVBvaW50LnRvU3RyaW5nKDE2KX19YFxuICAgIH0gZWxzZSBlbWl0dGVkICs9IGNoYXJhY3RlclxuICB9XG5cbiAgcmV0dXJuIGAke2VtaXR0ZWR9XCJgXG59XG5cbi8qKlxuICogRW1pdHMgYSBKYXZhIHN0cmluZyB1c2luZyBzdGFuZGFyZCBvciBmaXhlZC13aWR0aCBvY3RhbCBjb250cm9sIGVzY2FwZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBWYWxpZCBVbmljb2RlIHNjYWxhciBzdHJpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBKYXZhIHN0cmluZyBsaXRlcmFsLlxuICovXG5mdW5jdGlvbiBlbWl0SmF2YVN0cmluZyh2YWx1ZSkge1xuICBsZXQgZW1pdHRlZCA9IFwiXFxcIlwiXG5cbiAgZm9yIChjb25zdCBjaGFyYWN0ZXIgb2YgdmFsdWUpIHtcbiAgICBjb25zdCBjb2RlUG9pbnQgPSBjaGFyYWN0ZXIuY29kZVBvaW50QXQoMClcblxuICAgIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFwiXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcIlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxcXFwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXFxcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcYlwiKSBlbWl0dGVkICs9IFwiXFxcXGJcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcdFwiKSBlbWl0dGVkICs9IFwiXFxcXHRcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcblwiKSBlbWl0dGVkICs9IFwiXFxcXG5cIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcZlwiKSBlbWl0dGVkICs9IFwiXFxcXGZcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIlxcclwiKSBlbWl0dGVkICs9IFwiXFxcXHJcIlxuICAgIGVsc2UgaWYgKGNvZGVQb2ludCAhPT0gdW5kZWZpbmVkICYmIChjb2RlUG9pbnQgPCAzMiB8fCBjb2RlUG9pbnQgPT0gMTI3KSkge1xuICAgICAgZW1pdHRlZCArPSBgXFxcXCR7Y29kZVBvaW50LnRvU3RyaW5nKDgpLnBhZFN0YXJ0KDMsIFwiMFwiKX1gXG4gICAgfSBlbHNlIGVtaXR0ZWQgKz0gY2hhcmFjdGVyXG4gIH1cblxuICByZXR1cm4gYCR7ZW1pdHRlZH1cImBcbn1cblxuLyoqXG4gKiBFbWl0cyBhbiBvcmRpbmFyeSBub25pbnRlcnBvbGF0ZWQgS290bGluIHN0cmluZyBvdmVyIFVuaWNvZGUgc2NhbGFyIHZhbHVlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFZhbGlkIFVuaWNvZGUgc2NhbGFyIHN0cmluZy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEtvdGxpbiBzdHJpbmcgbGl0ZXJhbC5cbiAqL1xuZnVuY3Rpb24gZW1pdEtvdGxpblN0cmluZyh2YWx1ZSkge1xuICBsZXQgZW1pdHRlZCA9IFwiXFxcIlwiXG5cbiAgZm9yIChjb25zdCBjaGFyYWN0ZXIgb2YgdmFsdWUpIHtcbiAgICBjb25zdCBjb2RlUG9pbnQgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGNoYXJhY3Rlci5jb2RlUG9pbnRBdCgwKSlcblxuICAgIGlmIChjaGFyYWN0ZXIgPT0gXCJcXFwiXCIpIGVtaXR0ZWQgKz0gXCJcXFxcXFxcIlwiXG4gICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IFwiXFxcXFwiKSBlbWl0dGVkICs9IFwiXFxcXFxcXFxcIlxuICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSBcIiRcIikgZW1pdHRlZCArPSBcIlxcXFwkXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXGJcIikgZW1pdHRlZCArPSBcIlxcXFxiXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHRcIikgZW1pdHRlZCArPSBcIlxcXFx0XCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXG5cIikgZW1pdHRlZCArPSBcIlxcXFxuXCJcbiAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gXCJcXHJcIikgZW1pdHRlZCArPSBcIlxcXFxyXCJcbiAgICBlbHNlIGlmIChjb2RlUG9pbnQgPCAzMiB8fCBjb2RlUG9pbnQgPT0gMTI3KSBlbWl0dGVkICs9IGBcXFxcdSR7Y29kZVBvaW50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCg0LCBcIjBcIil9YFxuICAgIGVsc2UgZW1pdHRlZCArPSBjaGFyYWN0ZXJcbiAgfVxuXG4gIHJldHVybiBgJHtlbWl0dGVkfVwiYFxufVxuIl19
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Checks the intentionally narrow backend contract.
|
|
3
3
|
* @param {import("../semantic/types.js").SemanticModule} module - Semantic module.
|
|
4
4
|
* @param {import("../semantic/types.js").BackendLanguage} language - Backend language or binary target.
|
|
5
|
-
* @param {{externalDeclarationIds?: Set<string>, program?: boolean, visibleFunctions?: Map<string, import("../semantic/types.js").FunctionDeclaration>, visibleRecords?: Map<string, import("../semantic/types.js").RecordDeclaration>, visibleClasses?: Map<string, import("../semantic/types.js").ClassDeclaration>, visibleErrors?: Map<string, import("../semantic/types.js").ErrorDeclaration>, visibleCallEffects?: Map<string, Set<string>>}} [options] - Resolved program validation context.
|
|
5
|
+
* @param {{externalDeclarationIds?: Set<string>, program?: boolean, visibleFunctions?: Map<string, import("../semantic/types.js").FunctionDeclaration>, visibleRecords?: Map<string, import("../semantic/types.js").RecordDeclaration>, visibleClasses?: Map<string, import("../semantic/types.js").ClassDeclaration>, visibleInterfaces?: Map<string, import("../semantic/types.js").InterfaceDeclaration>, visibleErrors?: Map<string, import("../semantic/types.js").ErrorDeclaration>, visibleCallEffects?: Map<string, Set<string>>}} [options] - Resolved program validation context.
|
|
6
6
|
* @returns {void}
|
|
7
7
|
*/
|
|
8
8
|
export declare function validateBackendModule(module: import("../semantic/types.js").SemanticModule, language: import("../semantic/types.js").BackendLanguage, options?: {
|
|
@@ -11,6 +11,7 @@ export declare function validateBackendModule(module: import("../semantic/types.
|
|
|
11
11
|
visibleFunctions?: Map<string, import("../semantic/types.js").FunctionDeclaration>;
|
|
12
12
|
visibleRecords?: Map<string, import("../semantic/types.js").RecordDeclaration>;
|
|
13
13
|
visibleClasses?: Map<string, import("../semantic/types.js").ClassDeclaration>;
|
|
14
|
+
visibleInterfaces?: Map<string, import("../semantic/types.js").InterfaceDeclaration>;
|
|
14
15
|
visibleErrors?: Map<string, import("../semantic/types.js").ErrorDeclaration>;
|
|
15
16
|
visibleCallEffects?: Map<string, Set<string>>;
|
|
16
17
|
}): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/backends/shared.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/backends/shared.js"],"names":[],"mappings":"AAuDA;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EALjC,OAAO,sBAAsB,EAAE,cAKE,EAAE,QAAQ,EAJ3C,OAAO,sBAAsB,EAAE,eAIY,EAAE,OAAO,AAH5D,CACA,EADQ;IAAC,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;IAAC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;IAAC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;IAAC,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;IAAC,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;CAGrc,GAFvD,IAAI,CAqHhB;AA2hED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAPpB,OAAO,aAAa,EAAE,YAOF,EAAE,IAAI,EAN1B,OAAO,sBAAsB,EAAE,0BAML,EAAE,IAAI,EALhC,MAKgC,EAAE,QAAQ,EAJ1C,OAAO,sBAAsB,EAAE,mBAIW,EAAE,SAAS,AAH7D,CACA,EADQ,OAG6D,GAF3D,IAAI,CAoFhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAP1B,OAAO,aAAa,EAAE,YAOI,EAAE,UAAU,EANtC,OAAO,sBAAsB,EAAE,UAMO,EAAE,IAAI,EAL5C,MAK4C,EAAE,QAAQ,EAJtD,OAAO,sBAAsB,EAAE,mBAIuB,EAAE,cAAc,EAHtE,CAAC,IAAI,EAAE,MAAM,KAAK,MAGoD,GAFpE,IAAI,CAgahB;AAkED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAJ9B,OAAO,aAAa,EAAE,YAIQ,EAAE,UAAU,EAH1C,OAAO,sBAAsB,EAAE,UAGW,GAFxC,MAAM,CAiClB;AAWD;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAH1C,OAAO,sBAAsB,EAAE,cAGW,GAFxC,OAAO,CAKnB"}
|