UNPKG

@leosprograms/vf-graphql-holochain

Version:

GraphQL schema bindings for the Holochain implementation of ValueFlows

121 lines 23.4 kB
/** * Resolver callbacks to bind vf-graphql with HoloREA DNAs * * @package: HoloREA * @since: 2019-05-20 */ import { URI, VfModule } from '../types.js'; import { DateTimeResolver as DateTime } from 'graphql-scalars'; import { autoConnect } from '../connection.js'; import Query from '../queries/index.js'; import Mutation from '../mutations/index.js'; import Revision from './revision.js'; import Measure from './measure.js'; import Unit from './unit.js'; import ResourceSpecification from './resourceSpecification.js'; import Agent from './agent.js'; import Process from './process.js'; import ProcessSpecification from './processSpecification.js'; import EconomicResource from './economicResource.js'; import EconomicEvent from './economicEvent.js'; import Commitment from './commitment.js'; import Fulfillment from './fulfillment.js'; import Intent from './intent.js'; import Satisfaction from './satisfaction.js'; import Proposal from './proposal.js'; import ProposedTo from './proposedTo.js'; import ProposedIntent from './proposedIntent.js'; import Agreement from './agreement.js'; import Plan from './plan.js'; import RecipeFlow from './recipeFlow.js'; import RecipeProcess from './recipeProcess.js'; import RecipeExchange from './recipeExchange.js'; // union type disambiguation const EventOrCommitment = { __resolveType: (obj, ctx, info) => obj.__typename, }; const ProductionFlowItem = { __resolveType: (obj, ctx, info) => obj.__typename, }; const AccountingScope = { __resolveType: (obj, ctx, info) => obj.__typename, }; const TrackTraceItem = { __resolveType: (obj, ctx, info) => obj.__typename, }; // the default export const generateResolvers = async (options) => { const { weaveAppAgentClient, enabledVFModules, conductorUri, adminConductorUri, appId, dnaConfig, traceAppSignals = undefined, origin = undefined, } = options; const hasHistory = -1 !== enabledVFModules.indexOf(VfModule.History); const hasAgent = -1 !== enabledVFModules.indexOf(VfModule.Agent); const hasMeasurement = -1 !== enabledVFModules.indexOf(VfModule.Measurement); const hasResourceSpecification = -1 !== enabledVFModules.indexOf(VfModule.ResourceSpecification); const hasObservation = -1 !== enabledVFModules.indexOf(VfModule.Observation); const hasProcess = -1 !== enabledVFModules.indexOf(VfModule.Process); const hasProcessSpecification = -1 !== enabledVFModules.indexOf(VfModule.ProcessSpecification); const hasCommitment = -1 !== enabledVFModules.indexOf(VfModule.Commitment); const hasFulfillment = -1 !== enabledVFModules.indexOf(VfModule.Fulfillment); const hasIntent = -1 !== enabledVFModules.indexOf(VfModule.Intent); const hasSatisfaction = -1 !== enabledVFModules.indexOf(VfModule.Satisfaction); const hasProposal = -1 !== enabledVFModules.indexOf(VfModule.Proposal); const hasAgreement = -1 !== enabledVFModules.indexOf(VfModule.Agreement); const hasPlan = -1 !== enabledVFModules.indexOf(VfModule.Plan); const hasRecipe = -1 !== enabledVFModules.indexOf(VfModule.Recipe); // prefetch connection for this API schema // and also this makes calls to the admin conductor to authorize a set of signing // credentials for each Cell if (origin) { console.log("autoconnecting with origin", origin); await autoConnect(weaveAppAgentClient, conductorUri, adminConductorUri, appId, traceAppSignals, origin); } else { console.log("autoconnecting no origin"); await autoConnect(weaveAppAgentClient, conductorUri, adminConductorUri, appId, traceAppSignals); } return Object.assign({ // scalars URI, DateTime, // root schemas Query: Query(enabledVFModules, dnaConfig, conductorUri), Mutation: Mutation(enabledVFModules, dnaConfig, conductorUri), }, // union type disambiguators (hasObservation && hasProcess ? { ProductionFlowItem } : {}), (hasAgent ? { AccountingScope } : {}), (hasSatisfaction ? { EventOrCommitment } : {}), (hasObservation ? { TrackTraceItem } : {}), // object field resolvers (hasHistory ? { Revision: Revision(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasAgent ? { Agent: Agent(enabledVFModules, dnaConfig, conductorUri), Person: Agent(enabledVFModules, dnaConfig, conductorUri), Organization: Agent(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasMeasurement ? { Measure: Measure(enabledVFModules, dnaConfig, conductorUri), Unit: Unit(enabledVFModules, dnaConfig, conductorUri) } : {}), (hasResourceSpecification ? { ResourceSpecification: ResourceSpecification(enabledVFModules, dnaConfig, conductorUri) } : {}), (hasObservation ? { EconomicEvent: EconomicEvent(enabledVFModules, dnaConfig, conductorUri), EconomicResource: EconomicResource(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasProcess ? { Process: Process(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasProcessSpecification ? { ProcessSpecification: ProcessSpecification(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasCommitment ? { Commitment: Commitment(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasFulfillment ? { Fulfillment: Fulfillment(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasIntent ? { Intent: Intent(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasSatisfaction ? { Satisfaction: Satisfaction(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasProposal ? { Proposal: Proposal(enabledVFModules, dnaConfig, conductorUri), ProposedIntent: ProposedIntent(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasProposal && hasAgent ? { ProposedTo: ProposedTo(enabledVFModules, dnaConfig, conductorUri), } : {}), (hasAgreement ? { Agreement: Agreement(enabledVFModules, dnaConfig, conductorUri) } : {}), (hasPlan ? { Plan: Plan(enabledVFModules, dnaConfig, conductorUri) } : {}), (hasRecipe ? { RecipeFlow: RecipeFlow(enabledVFModules, dnaConfig, conductorUri), RecipeProcess: RecipeProcess(enabledVFModules, dnaConfig, conductorUri), RecipeExchange: RecipeExchange(enabledVFModules, dnaConfig, conductorUri), } : {})); }; export default generateResolvers; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9yZXNvbHZlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQWtDLEdBQUcsRUFBK0IsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hHLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFrQixNQUFNLGtCQUFrQixDQUFBO0FBRTlELE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFBO0FBQ3ZDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFBO0FBRTVDLE9BQU8sUUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUVwQyxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUE7QUFDbEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQzVCLE9BQU8scUJBQXFCLE1BQU0sNEJBQTRCLENBQUE7QUFFOUQsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBRTlCLE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQTtBQUNsQyxPQUFPLG9CQUFvQixNQUFNLDJCQUEyQixDQUFBO0FBQzVELE9BQU8sZ0JBQWdCLE1BQU0sdUJBQXVCLENBQUE7QUFDcEQsT0FBTyxhQUFhLE1BQU0sb0JBQW9CLENBQUE7QUFFOUMsT0FBTyxVQUFVLE1BQU0saUJBQWlCLENBQUE7QUFDeEMsT0FBTyxXQUFXLE1BQU0sa0JBQWtCLENBQUE7QUFFMUMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sWUFBWSxNQUFNLG1CQUFtQixDQUFBO0FBRTVDLE9BQU8sUUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUNwQyxPQUFPLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQTtBQUVoRCxPQUFPLFNBQVMsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN0QyxP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QUFTLEVBQUUsWUFBWSxDQUFDO1FBQzdELGNBQWMsRUFBRSxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQztLQUMxRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDUCxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLFVBQVUsRUFBRSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQztLQUNsRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDUCxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDekYsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQzFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNYLFVBQVUsRUFBRSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQztRQUNqRSxhQUFhLEVBQUUsYUFBYSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUM7UUFDdkUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDO0tBQzFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNSLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxlQUFlLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXNvbHZlciBjYWxsYmFja3MgdG8gYmluZCB2Zi1ncmFwaHFsIHdpdGggSG9sb1JFQSBETkFzXG4gKlxuICogQHBhY2thZ2U6IEhvbG9SRUFcbiAqIEBzaW5jZTogICAyMDE5LTA1LTIwXG4gKi9cblxuaW1wb3J0IHsgRE5BSWRNYXBwaW5ncywgUmVzb2x2ZXJPcHRpb25zLCBVUkksIERlY2ltYWwsIERFRkFVTFRfVkZfTU9EVUxFUywgVmZNb2R1bGUgfSBmcm9tICcuLi90eXBlcy5qcydcbmltcG9ydCB7IERhdGVUaW1lUmVzb2x2ZXIgYXMgRGF0ZVRpbWUgfSBmcm9tICdncmFwaHFsLXNjYWxhcnMnXG5cbmltcG9ydCB7IGF1dG9Db25uZWN0LCBvcGVuQ29ubmVjdGlvbiB9IGZyb20gJy4uL2Nvbm5lY3Rpb24uanMnXG5cbmltcG9ydCBRdWVyeSBmcm9tICcuLi9xdWVyaWVzL2luZGV4LmpzJ1xuaW1wb3J0IE11dGF0aW9uIGZyb20gJy4uL211dGF0aW9ucy9pbmRleC5qcydcblxuaW1wb3J0IFJldmlzaW9uIGZyb20gJy4vcmV2aXNpb24uanMnXG5cbmltcG9ydCBNZWFzdXJlIGZyb20gJy4vbWVhc3VyZS5qcydcbmltcG9ydCBVbml0IGZyb20gJy4vdW5pdC5qcydcbmltcG9ydCBSZXNvdXJjZVNwZWNpZmljYXRpb24gZnJvbSAnLi9yZXNvdXJjZVNwZWNpZmljYXRpb24uanMnXG5cbmltcG9ydCBBZ2VudCBmcm9tICcuL2FnZW50LmpzJ1xuXG5pbXBvcnQgUHJvY2VzcyBmcm9tICcuL3Byb2Nlc3MuanMnXG5pbXBvcnQgUHJvY2Vzc1NwZWNpZmljYXRpb24gZnJvbSAnLi9wcm9jZXNzU3BlY2lmaWNhdGlvbi5qcydcbmltcG9ydCBFY29ub21pY1Jlc291cmNlIGZyb20gJy4vZWNvbm9taWNSZXNvdXJjZS5qcydcbmltcG9ydCBFY29ub21pY0V2ZW50IGZyb20gJy4vZWNvbm9taWNFdmVudC5qcydcblxuaW1wb3J0IENvbW1pdG1lbnQgZnJvbSAnLi9jb21taXRtZW50LmpzJ1xuaW1wb3J0IEZ1bGZpbGxtZW50IGZyb20gJy4vZnVsZmlsbG1lbnQuanMnXG5cbmltcG9ydCBJbnRlbnQgZnJvbSAnLi9pbnRlbnQuanMnXG5pbXBvcnQgU2F0aXNmYWN0aW9uIGZyb20gJy4vc2F0aXNmYWN0aW9uLmpzJ1xuXG5pbXBvcnQgUHJvcG9zYWwgZnJvbSAnLi9wcm9wb3NhbC5qcydcbmltcG9ydCBQcm9wb3NlZFRvIGZyb20gJy4vcHJvcG9zZWRUby5qcydcbmltcG9ydCBQcm9wb3NlZEludGVudCBmcm9tICcuL3Byb3Bvc2VkSW50ZW50LmpzJ1xuXG5pbXBvcnQgQWdyZWVtZW50IGZyb20gJy4vYWdyZWVtZW50LmpzJ1xuaW1wb3J0IFBsYW4gZnJvbSAnLi9wbGFuLmpzJ1xuXG5pbXBvcnQgUmVjaXBlRmxvdyBmcm9tICcuL3JlY2lwZUZsb3cuanMnXG5pbXBvcnQgUmVjaXBlUHJvY2VzcyBmcm9tICcuL3JlY2lwZVByb2Nlc3MuanMnXG5pbXBvcnQgUmVjaXBlRXhjaGFuZ2UgZnJvbSAnLi9yZWNpcGVFeGNoYW5nZS5qcydcblxuLy8gdW5pb24gdHlwZSBkaXNhbWJpZ3VhdGlvblxuY29uc3QgRXZlbnRPckNvbW1pdG1lbnQgPSB7XG4gIF9fcmVzb2x2ZVR5cGU6IChvYmosIGN0eCwgaW5mbykgPT4gb2JqLl9fdHlwZW5hbWUsXG59XG5jb25zdCBQcm9kdWN0aW9uRmxvd0l0ZW0gPSB7XG4gIF9fcmVzb2x2ZVR5cGU6IChvYmosIGN0eCwgaW5mbykgPT4gb2JqLl9fdHlwZW5hbWUsXG59XG5jb25zdCBBY2NvdW50aW5nU2NvcGUgPSB7XG4gIF9fcmVzb2x2ZVR5cGU6IChvYmosIGN0eCwgaW5mbykgPT4gb2JqLl9fdHlwZW5hbWUsXG59XG5jb25zdCBUcmFja1RyYWNlSXRlbSA9IHtcbiAgX19yZXNvbHZlVHlwZTogKG9iaiwgY3R4LCBpbmZvKSA9PiBvYmouX190eXBlbmFtZSxcbn1cblxuLy8gdGhlIGRlZmF1bHQgZXhwb3J0XG5jb25zdCBnZW5lcmF0ZVJlc29sdmVycyA9IGFzeW5jIChvcHRpb25zOiBSZXNvbHZlck9wdGlvbnMpID0+IHtcbiAgY29uc3Qge1xuICAgIHdlYXZlQXBwQWdlbnRDbGllbnQsXG4gICAgZW5hYmxlZFZGTW9kdWxlcyxcbiAgICBjb25kdWN0b3JVcmksXG4gICAgYWRtaW5Db25kdWN0b3JVcmksXG4gICAgYXBwSWQsXG4gICAgZG5hQ29uZmlnLFxuICAgIHRyYWNlQXBwU2lnbmFscyA9IHVuZGVmaW5lZCxcbiAgICBvcmlnaW4gPSB1bmRlZmluZWQsXG4gIH0gPSBvcHRpb25zXG5cbiAgY29uc3QgaGFzSGlzdG9yeSA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuSGlzdG9yeSlcbiAgY29uc3QgaGFzQWdlbnQgPSAtMSAhPT0gZW5hYmxlZFZGTW9kdWxlcy5pbmRleE9mKFZmTW9kdWxlLkFnZW50KVxuICBjb25zdCBoYXNNZWFzdXJlbWVudCA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuTWVhc3VyZW1lbnQpXG4gIGNvbnN0IGhhc1Jlc291cmNlU3BlY2lmaWNhdGlvbiA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuUmVzb3VyY2VTcGVjaWZpY2F0aW9uKVxuICBjb25zdCBoYXNPYnNlcnZhdGlvbiA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuT2JzZXJ2YXRpb24pXG4gIGNvbnN0IGhhc1Byb2Nlc3MgPSAtMSAhPT0gZW5hYmxlZFZGTW9kdWxlcy5pbmRleE9mKFZmTW9kdWxlLlByb2Nlc3MpXG4gIGNvbnN0IGhhc1Byb2Nlc3NTcGVjaWZpY2F0aW9uID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5Qcm9jZXNzU3BlY2lmaWNhdGlvbilcbiAgY29uc3QgaGFzQ29tbWl0bWVudCA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuQ29tbWl0bWVudClcbiAgY29uc3QgaGFzRnVsZmlsbG1lbnQgPSAtMSAhPT0gZW5hYmxlZFZGTW9kdWxlcy5pbmRleE9mKFZmTW9kdWxlLkZ1bGZpbGxtZW50KVxuICBjb25zdCBoYXNJbnRlbnQgPSAtMSAhPT0gZW5hYmxlZFZGTW9kdWxlcy5pbmRleE9mKFZmTW9kdWxlLkludGVudClcbiAgY29uc3QgaGFzU2F0aXNmYWN0aW9uID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5TYXRpc2ZhY3Rpb24pXG4gIGNvbnN0IGhhc1Byb3Bvc2FsID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5Qcm9wb3NhbClcbiAgY29uc3QgaGFzQWdyZWVtZW50ID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5BZ3JlZW1lbnQpXG4gIGNvbnN0IGhhc1BsYW4gPSAtMSAhPT0gZW5hYmxlZFZGTW9kdWxlcy5pbmRleE9mKFZmTW9kdWxlLlBsYW4pXG4gIGNvbnN0IGhhc1JlY2lwZSA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuUmVjaXBlKVxuXG4gIC8vIHByZWZldGNoIGNvbm5lY3Rpb24gZm9yIHRoaXMgQVBJIHNjaGVtYVxuICAvLyBhbmQgYWxzbyB0aGlzIG1ha2VzIGNhbGxzIHRvIHRoZSBhZG1pbiBjb25kdWN0b3IgdG8gYXV0aG9yaXplIGEgc2V0IG9mIHNpZ25pbmdcbiAgLy8gY3JlZGVudGlhbHMgZm9yIGVhY2ggQ2VsbFxuICBpZiAob3JpZ2luKSB7XG4gICAgY29uc29sZS5sb2coXCJhdXRvY29ubmVjdGluZyB3aXRoIG9yaWdpblwiLCBvcmlnaW4pXG4gICAgYXdhaXQgYXV0b0Nvbm5lY3Qod2VhdmVBcHBBZ2VudENsaWVudCwgY29uZHVjdG9yVXJpLCBhZG1pbkNvbmR1Y3RvclVyaSwgYXBwSWQsIHRyYWNlQXBwU2lnbmFscywgb3JpZ2luKVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKFwiYXV0b2Nvbm5lY3Rpbmcgbm8gb3JpZ2luXCIpXG4gICAgYXdhaXQgYXV0b0Nvbm5lY3Qod2VhdmVBcHBBZ2VudENsaWVudCwgY29uZHVjdG9yVXJpLCBhZG1pbkNvbmR1Y3RvclVyaSwgYXBwSWQsIHRyYWNlQXBwU2lnbmFscylcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHtcbiAgICAvLyBzY2FsYXJzXG4gICAgVVJJLCBEYXRlVGltZSxcbiAgICAvLyByb290IHNjaGVtYXNcbiAgICBRdWVyeTogUXVlcnkoZW5hYmxlZFZGTW9kdWxlcywgZG5hQ29uZmlnLCBjb25kdWN0b3JVcmkpLFxuICAgIE11dGF0aW9uOiBNdXRhdGlvbihlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSksXG4gIH0sXG4gIC8vIHVuaW9uIHR5cGUgZGlzYW1iaWd1YXRvcnNcbiAgKGhhc09ic2VydmF0aW9uICYmIGhhc1Byb2Nlc3MgPyB7IFByb2R1Y3Rpb25GbG93SXRlbSB9IDoge30pLFxuICAoaGFzQWdlbnQgPyB7IEFjY291bnRpbmdTY29wZSB9IDoge30pLFxuICAoaGFzU2F0aXNmYWN0aW9uID8geyBFdmVudE9yQ29tbWl0bWVudCB9IDoge30pLFxuICAoaGFzT2JzZXJ2YXRpb24gPyB7IFRyYWNrVHJhY2VJdGVtIH0gOiB7fSksXG4gICAgLy8gb2JqZWN0IGZpZWxkIHJlc29sdmVyc1xuICAgIChoYXNIaXN0b3J5ID8ge1xuICAgICAgUmV2aXNpb246IFJldmlzaW9uKGVuYWJsZWRWRk1vZHVsZXMsIGRuYUNvbmZpZywgY29uZHVjdG9yVXJpKSxcbiAgICB9IDoge30pLFxuICAgIChoYXNBZ2VudCA/IHtcbiAgICAgIEFnZW50OiBBZ2VudChlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSksXG4gICAgICBQZXJzb246IEFnZW50KGVuYWJsZWRWRk1vZHVsZXMsIGRuYUNvbmZpZywgY29uZHVjdG9yVXJpKSxcbiAgICAgIE9yZ2FuaXphdGlvbjogQWdlbnQoZW5hYmxlZFZGTW9kdWxlcywgZG5hQ29uZmlnLCBjb25kdWN0b3JVcmkpLFxuICAgIH0gOiB7fSksXG4gICAgKGhhc01lYXN1cmVtZW50ID8ge1xuICAgICAgTWVhc3VyZTogTWVhc3VyZShlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSksXG4gICAgICBVbml0OiBVbml0KGVuYWJsZWRWRk1vZHVsZXMsIGRuYUNvbmZpZywgY29uZHVjdG9yVXJpKVxuICAgIH0gOiB7fSksXG4gICAgKGhhc1Jlc291cmNlU3BlY2lmaWNhdGlvbiA/IHsgUmVzb3VyY2VTcGVjaWZpY2F0aW9uOiBSZXNvdXJjZVNwZWNpZmljYXRpb24oZW5hYmxlZFZGTW9kdWxlcywgZG5hQ29uZmlnLCBjb25kdWN0b3JVcmkpIH0gOiB7fSksXG4gICAgKGhhc09ic2VydmF0aW9uID8ge1xuICAgICAgRWNvbm9taWNFdmVudDogRWNvbm9taWNFdmVudChlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSksXG4gICAgICBFY29ub21pY1Jlc291cmNlOiBFY29ub21pY1Jlc291cmNlKGVuYWJsZWRWRk1vZHVsZXMsIGRuYUNvbmZpZywgY29uZHVjdG9yVXJpKSxcbiAgICB9IDoge30pLFxuICAgIChoYXNQcm9jZXNzID8ge1xuICAgICAgUHJvY2VzczogUHJvY2VzcyhlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSksXG4gICAgfSA6IHt9KSxcbiAgICAoaGFzUHJvY2Vzc1NwZWNpZmljYXRpb24gPyB7XG4gICAgICBQcm9jZXNzU3BlY2lmaWNhdGlvbjogUHJvY2Vzc1NwZWNpZmljYXRpb24oZW5hYmxlZFZGTW9kdWxlcywgZG5hQ29uZmlnLCBjb25kdWN0b3JVcmkpLFxuICAgIH0gOiB7fSksXG4gICAgKGhhc0NvbW1pdG1lbnQgPyB7XG4gICAgICBDb21taXRtZW50OiBDb21taXRtZW50KGVuYWJsZWRWRk1vZHVsZXMsIGRuYUNvbmZpZywgY29uZHVjdG9yVXJpKSxcbiAgICB9IDoge30pLFxuICAgIChoYXNGdWxmaWxsbWVudCA/IHtcbiAgICAgIEZ1bGZpbGxtZW50OiBGdWxmaWxsbWVudChlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSksXG4gICAgfSA6IHt9KSxcbiAgICAoaGFzSW50ZW50ID8ge1xuICAgICAgSW50ZW50OiBJbnRlbnQoZW5hYmxlZFZGTW9kdWxlcywgZG5hQ29uZmlnLCBjb25kdWN0b3JVcmkpLFxuICAgIH0gOiB7fSksXG4gICAgKGhhc1NhdGlzZmFjdGlvbiA/IHtcbiAgICAgIFNhdGlzZmFjdGlvbjogU2F0aXNmYWN0aW9uKGVuYWJsZWRWRk1vZHVsZXMsIGRuYUNvbmZpZywgY29uZHVjdG9yVXJpKSxcbiAgICB9IDoge30pLFxuICAgIChoYXNQcm9wb3NhbCA/IHtcbiAgICAgIFByb3Bvc2FsOiBQcm9wb3NhbChlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSksXG4gICAgICBQcm9wb3NlZEludGVudDogUHJvcG9zZWRJbnRlbnQoZW5hYmxlZFZGTW9kdWxlcywgZG5hQ29uZmlnLCBjb25kdWN0b3JVcmkpLFxuICAgIH0gOiB7fSksXG4gICAgKGhhc1Byb3Bvc2FsICYmIGhhc0FnZW50ID8ge1xuICAgICAgUHJvcG9zZWRUbzogUHJvcG9zZWRUbyhlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSksXG4gICAgfSA6IHt9KSxcbiAgICAoaGFzQWdyZWVtZW50ID8geyBBZ3JlZW1lbnQ6IEFncmVlbWVudChlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSkgfSA6IHt9KSxcbiAgICAoaGFzUGxhbiA/IHsgUGxhbjogUGxhbihlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSkgfSA6IHt9KSxcbiAgICAoaGFzUmVjaXBlID8geyBcbiAgICAgIFJlY2lwZUZsb3c6IFJlY2lwZUZsb3coZW5hYmxlZFZGTW9kdWxlcywgZG5hQ29uZmlnLCBjb25kdWN0b3JVcmkpLFxuICAgICAgUmVjaXBlUHJvY2VzczogUmVjaXBlUHJvY2VzcyhlbmFibGVkVkZNb2R1bGVzLCBkbmFDb25maWcsIGNvbmR1Y3RvclVyaSksXG4gICAgICBSZWNpcGVFeGNoYW5nZTogUmVjaXBlRXhjaGFuZ2UoZW5hYmxlZFZGTW9kdWxlcywgZG5hQ29uZmlnLCBjb25kdWN0b3JVcmkpLFxuICAgIH0gOiB7fSksXG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2VuZXJhdGVSZXNvbHZlcnNcbiJdfQ==