sonamu 0.9.4 → 0.9.6
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/dist/ai/providers/rtzr/utils.js +2 -2
- package/dist/api/config.d.ts +13 -2
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +1 -1
- package/dist/api/context.d.ts +17 -7
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +1 -1
- package/dist/api/decorators.d.ts +18 -0
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +54 -3
- package/dist/api/index.js +8 -3
- package/dist/api/sonamu.d.ts +24 -9
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +365 -79
- package/dist/api/websocket-helpers.d.ts +24 -0
- package/dist/api/websocket-helpers.d.ts.map +1 -0
- package/dist/api/websocket-helpers.js +77 -0
- package/dist/bin/cli.js +12 -4
- package/dist/database/upsert-builder.js +4 -4
- package/dist/dict/sonamu-dictionary.js +6 -6
- package/dist/entity/entity-manager.js +1 -1
- package/dist/entity/entity.js +3 -3
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -4
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +8 -9
- package/dist/stream/index.d.ts +6 -0
- package/dist/stream/index.d.ts.map +1 -1
- package/dist/stream/index.js +13 -2
- package/dist/stream/ws-audience-resolver.d.ts +15 -0
- package/dist/stream/ws-audience-resolver.d.ts.map +1 -0
- package/dist/stream/ws-audience-resolver.js +31 -0
- package/dist/stream/ws-audience.d.ts +28 -0
- package/dist/stream/ws-audience.d.ts.map +1 -0
- package/dist/stream/ws-audience.js +46 -0
- package/dist/stream/ws-cluster-bus.d.ts +23 -0
- package/dist/stream/ws-cluster-bus.d.ts.map +1 -0
- package/dist/stream/ws-cluster-bus.js +18 -0
- package/dist/stream/ws-core.d.ts +15 -0
- package/dist/stream/ws-core.d.ts.map +1 -0
- package/dist/stream/ws-core.js +1 -0
- package/dist/stream/ws-delivery.d.ts +24 -0
- package/dist/stream/ws-delivery.d.ts.map +1 -0
- package/dist/stream/ws-delivery.js +103 -0
- package/dist/stream/ws-local-connection-store.d.ts +10 -0
- package/dist/stream/ws-local-connection-store.d.ts.map +1 -0
- package/dist/stream/ws-local-connection-store.js +44 -0
- package/dist/stream/ws-presence-store.d.ts +61 -0
- package/dist/stream/ws-presence-store.d.ts.map +1 -0
- package/dist/stream/ws-presence-store.js +236 -0
- package/dist/stream/ws-registry.d.ts +42 -0
- package/dist/stream/ws-registry.d.ts.map +1 -0
- package/dist/stream/ws-registry.js +108 -0
- package/dist/stream/ws.d.ts +52 -0
- package/dist/stream/ws.d.ts.map +1 -0
- package/dist/stream/ws.js +397 -0
- package/dist/syncer/api-parser.d.ts.map +1 -1
- package/dist/syncer/api-parser.js +72 -2
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +13 -12
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +7 -4
- package/dist/syncer/event-batcher.d.ts +27 -0
- package/dist/syncer/event-batcher.d.ts.map +1 -0
- package/dist/syncer/event-batcher.js +69 -0
- package/dist/syncer/file-patterns.d.ts +48 -26
- package/dist/syncer/file-patterns.d.ts.map +1 -1
- package/dist/syncer/file-patterns.js +71 -23
- package/dist/syncer/file-tracking.d.ts +13 -0
- package/dist/syncer/file-tracking.d.ts.map +1 -0
- package/dist/syncer/file-tracking.js +33 -0
- package/dist/syncer/index.js +2 -2
- package/dist/syncer/module-loader.d.ts +2 -11
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +3 -3
- package/dist/syncer/syncer-actions.d.ts +39 -6
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +125 -10
- package/dist/syncer/syncer.d.ts +33 -19
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +168 -168
- package/dist/syncer/watcher.d.ts +8 -0
- package/dist/syncer/watcher.d.ts.map +1 -0
- package/dist/syncer/watcher.js +105 -0
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +2 -1
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +36 -1
- package/dist/testing/bootstrap.d.ts.map +1 -1
- package/dist/testing/bootstrap.js +8 -1
- package/dist/testing/data-explorer.d.ts.map +1 -1
- package/dist/testing/data-explorer.js +5 -3
- package/dist/testing/fixture-manager.js +1 -1
- package/dist/types/types.d.ts +2 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +2 -2
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +4 -3
- package/dist/ui/cdd-service.js +1 -1
- package/dist/ui-web/assets/{index-C5KUjXm0.js → index-BmThfg-s.js} +39 -39
- package/dist/ui-web/assets/index-D4rYm-Xz.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.d.ts +27 -3
- package/dist/utils/async-utils.d.ts.map +1 -1
- package/dist/utils/async-utils.js +56 -6
- package/dist/utils/formatter.d.ts +7 -1
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +95 -60
- package/dist/utils/fs-utils.d.ts +2 -0
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +10 -2
- package/dist/utils/process-utils.d.ts +6 -0
- package/dist/utils/process-utils.d.ts.map +1 -1
- package/dist/utils/process-utils.js +16 -3
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +2 -2
- package/package.json +7 -5
- package/src/ai/providers/rtzr/utils.ts +1 -1
- package/src/api/__tests__/sonamu.websocket.test.ts +64 -0
- package/src/api/__tests__/websocket-context.types.test.ts +58 -0
- package/src/api/config.ts +28 -2
- package/src/api/context.ts +21 -7
- package/src/api/decorators.ts +101 -1
- package/src/api/sonamu.ts +529 -127
- package/src/api/websocket-helpers.ts +122 -0
- package/src/bin/cli.ts +10 -2
- package/src/database/upsert-builder.ts +3 -3
- package/src/dict/sonamu-dictionary.ts +3 -3
- package/src/entity/entity.ts +1 -1
- package/src/index.ts +6 -0
- package/src/migration/code-generation.ts +6 -11
- package/src/shared/app.shared.ts.txt +312 -4
- package/src/shared/web.shared.ts.txt +340 -4
- package/src/stream/__tests__/ws-contracts.test.ts +381 -0
- package/src/stream/__tests__/ws.test.ts +449 -0
- package/src/stream/index.ts +6 -0
- package/src/stream/ws-audience-resolver.ts +35 -0
- package/src/stream/ws-audience.ts +62 -0
- package/src/stream/ws-cluster-bus.ts +32 -0
- package/src/stream/ws-core.ts +16 -0
- package/src/stream/ws-delivery.ts +138 -0
- package/src/stream/ws-local-connection-store.ts +44 -0
- package/src/stream/ws-presence-store.ts +326 -0
- package/src/stream/ws-registry.ts +138 -0
- package/src/stream/ws.ts +591 -0
- package/src/syncer/__tests__/api-parser.websocket-type-ref.test.ts +78 -0
- package/src/syncer/api-parser.ts +112 -1
- package/src/syncer/checksum.ts +23 -29
- package/src/syncer/code-generator.ts +4 -1
- package/src/syncer/event-batcher.ts +72 -0
- package/src/syncer/file-patterns.ts +98 -30
- package/src/syncer/file-tracking.ts +27 -0
- package/src/syncer/module-loader.ts +5 -12
- package/src/syncer/syncer-actions.ts +179 -17
- package/src/syncer/syncer.ts +250 -287
- package/src/syncer/watcher.ts +128 -0
- package/src/tasks/workflow-manager.ts +1 -0
- package/src/template/__tests__/services.template.websocket.test.ts +79 -0
- package/src/template/implementations/services.template.ts +69 -0
- package/src/testing/bootstrap.ts +8 -1
- package/src/testing/data-explorer.ts +3 -2
- package/src/types/types.ts +20 -2
- package/src/ui/api.ts +10 -1
- package/src/utils/async-utils.ts +71 -4
- package/src/utils/formatter.ts +114 -75
- package/src/utils/fs-utils.ts +9 -0
- package/src/utils/process-utils.ts +17 -0
- package/src/utils/utils.ts +1 -1
- package/dist/ui-web/assets/index-Dr8pRJC_.css +0 -1
package/dist/types/types.js
CHANGED
|
@@ -347,7 +347,7 @@ var init_types = __esmMin((() => {
|
|
|
347
347
|
}
|
|
348
348
|
_ApiParamType.isPromise = isPromise;
|
|
349
349
|
function isContext(v) {
|
|
350
|
-
return typeof v === "object" && v !== null && v.t === "ref" && v.id === "Context";
|
|
350
|
+
return typeof v === "object" && v !== null && v.t === "ref" && (v.id === "Context" || v.id === "WebSocketContext");
|
|
351
351
|
}
|
|
352
352
|
_ApiParamType.isContext = isContext;
|
|
353
353
|
function isRefKnex(v) {
|
|
@@ -799,4 +799,4 @@ var init_types = __esmMin((() => {
|
|
|
799
799
|
//#endregion
|
|
800
800
|
init_types();
|
|
801
801
|
export { ApiParamType, BUILT_IN_TYPE_IDS, EntityJsonSchema, GenerateOptions, KnownOpclassValues, NormalPropSchema, PathAndCode, RelationPropSchema, RenderingNode, SonamuFileArraySchema, SonamuFileSchema, SonamuQueryMode, SonamuSemanticParams, TemplateKey, TemplateOptions, ZodStringFormat, getDescription, getEnumDefValues, getSubsetFields, init_types, isBelongsToOneRelationProp, isBigIntegerArrayProp, isBigIntegerProp, isBigIntegerSingleProp, isBooleanArrayProp, isBooleanProp, isBooleanSingleProp, isCustomJoinClause, isDateArrayProp, isDateProp, isDateSingleProp, isEnumArrayProp, isEnumDefWithCone, isEnumProp, isEnumSingleProp, isHasManyRelationProp, isIntegerArrayProp, isIntegerProp, isIntegerSingleProp, isInternalSubsetField, isJsonProp, isKnexError, isManyToManyRelationProp, isNumberArrayProp, isNumberProp, isNumberSingleProp, isNumericArrayProp, isNumericProp, isNumericSingleProp, isOneToOneRelationProp, isRelationProp, isSearchTextJsonSourceZodType, isSearchTextProp, isStringArrayProp, isStringProp, isStringSingleProp, isSubsetDefWithCone, isTsVectorProp, isUuidArrayProp, isUuidProp, isUuidSingleProp, isVectorArrayProp, isVectorProp, isVectorSingleProp, isVirtualCodeProp, isVirtualProp, isVirtualQueryProp, normalizeSubsetField, zArrayable };
|
|
802
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJuYW1lcyI6WyJ6Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcGx5LCB0eXBlIEZhc3RpZnlSZXF1ZXN0IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHR5cGUgQXBpRGVjb3JhdG9yT3B0aW9ucywgdHlwZSBDb250ZXh0IH0gZnJvbSBcIi4uL2FwaVwiO1xuaW1wb3J0IHsgdHlwZSBDYWNoZUNvbnRyb2xIYW5kbGVyIH0gZnJvbSBcIi4uL2NhY2hlLWNvbnRyb2wvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgR3VhcmRLZXkgfSBmcm9tIFwiLi8uLi9hcGkvZGVjb3JhdG9yc1wiO1xuXG4vKlxuICBVdGlsaXR5IFR5cGVzXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIHpBcnJheWFibGU8VCBleHRlbmRzIHouWm9kVHlwZUFueT4oc2hhcGU6IFQpOiB6LlpvZFVuaW9uPFtULCB6LlpvZEFycmF5PFQ+XT4ge1xuICByZXR1cm4gei51bmlvbihbc2hhcGUsIHNoYXBlLmFycmF5KCldKTtcbn1cbi8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIGFueSBpcyB1c2VkIHRvIG1ha2UgdGhlIHR5cGUgZGlzdHJpYnV0aXZlXG5leHBvcnQgdHlwZSBEaXN0cmlidXRpdmVPbWl0PFQsIEsgZXh0ZW5kcyBrZXlvZiBhbnk+ID0gVCBleHRlbmRzIGFueSA/IE9taXQ8VCwgSz4gOiBuZXZlcjtcblxuLypcbiAgTW9kZWwtRGVmaW5pdGlvblxuKi9cblxuLyoqXG4gKiDrtoDrqqggRW50aXR5IGZpeHR1cmUg7IOd7ISxIOyLnCDtlajqu5gg7IOd7ISx7ZWgIGNvbXBhbmlvbiBFbnRpdHkg7ISk7KCVXG4gKlxuICog7JiIOiBVc2VyIGZpeHR1cmUg7IOd7ISxIOyLnCBjcmVkZW50aWFscyBBY2NvdW5066W8IO2VqOq7mCDsg53shLFcbiAqL1xuZXhwb3J0IHR5cGUgRml4dHVyZUNvbXBhbmlvbiA9IHtcbiAgLyoqIO2VqOq7mCDsg53shLHtlaAgRW50aXR5IOydtOumhCAqL1xuICBlbnRpdHk6IHN0cmluZztcblxuICAvKipcbiAgICog6rOg7KCVIOyYpOuyhOudvOydtOuTnCDqsJIuXG4gICAqIFwie3tmaWVsZE5hbWV9fVwiIO2YleyLneycvOuhnCDrtoDrqqggZml4dHVyZeydmCDtlYTrk5wg6rCS7J2EIOywuOyhsO2VoCDsiJgg7J6I64ukLlxuICAgKiDsmIg6IHsgXCJhY2NvdW50X2lkXCI6IFwie3tlbWFpbH19XCIgfSDihpIg67aA66qoIFVzZXLsnZggZW1haWwg6rCSIOyCrOyaqVxuICAgKi9cbiAgb3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIOu2gOuqqCAx6rCc64u5IOyDneyEse2VoCBjb21wYW5pb24g6rCc7IiYLiDquLDrs7jqsJIgMS5cbiAgICog7JiIOiBjb3VudDogMiDihpIgVXNlciAx6rCc64u5IGNvbXBhbmlvbiAy6rCcIOyDneyEsVxuICAgKi9cbiAgY291bnQ/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIGNvbmU6IOuylOyaqSDrqZTtg4DrjbDsnbTthLAg7Iuc7Iqk7YWcXG4gKlxuICogRW50aXR5LCBQcm9wLCBFbnVtLCBTdWJzZXTsl5AgXCLshpTrsKnsmrjsnYQg64uo64ukXCLripQg6rCc64WQ7Jy866GcIOu2meydtOuKlCDri6jsnbwg7ISc7IigIOuplO2DgOuNsOydtO2EsOyeheuLiOuLpC5cbiAqIG5vdGUg7ZWY64KY66GcIOu5hOymiOuLiOyKpCDsnZjrr7jsmYAgZml4dHVyZSDsg53shLEg7Z6M7Yq466W8IO2VqOq7mCDquLDsiKDtlanri4jri6QuXG4gKi9cbmV4cG9ydCB0eXBlIENvbmUgPSB7XG4gIG5vdGU/OiBzdHJpbmc7IC8vIOydtCDrjIDsg4HsnbQg66y07JeH7J247KeAIOyEpOuqhSAo67mE7KaI64uI7IqkIOydmOuvuCArIGZpeHR1cmUg7Z6M7Yq4IO2Gte2VqSlcbiAgdGFncz86IHN0cmluZ1tdOyAvLyDrtoTrpZgv6rKA7IOJ7JqpIO2DnOq3uFxuXG4gIC8vIEZpeHR1cmUg7IOd7ISxIOq0gOugqFxuICBmaXh0dXJlR2VuZXJhdG9yPzogc3RyaW5nOyAvLyBGYWtlci5qcyDsvZTrk5wg65iQ64qUIOy7pOyKpO2FgCDtlajsiJhcbiAgZml4dHVyZURlZmF1bHQ/OiB1bmtub3duOyAvLyDquLDrs7jqsJJcbiAgZml4dHVyZVN0cmF0ZWd5PzogXCJzZXF1ZW5jZVwiOyAvLyBzdHJpbmcg7YOA7J6F7J207KeA66eMIERCIHNlcXVlbmNl66GcIOq0gOumrOuQmOuKlCBQSyAoYmV0dGVyLWF1dGgg65OxKVxuICBmaXh0dXJlQ29tcGFuaW9ucz86IEZpeHR1cmVDb21wYW5pb25bXTsgLy8g67aA66qoIGZpeHR1cmUg7IOd7ISxIOyLnCDtlajqu5gg7IOd7ISx7ZWgIGNvbXBhbmlvbiBFbnRpdHkg66qp66GdXG4gIGZpeHR1cmVQYXJlbnRPdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgLy8gcGFyZW50SWQg7JeU7Yuw7Yuw7J2YIOu2gOuqqCDsg53shLEg7IucIOyCrOyaqe2VoCBvdmVycmlkZSDqsJIgKOyYiDogeyBhY2hpZXZlbWVudF90eXBlOiBcIlBBUEVSXCIgfSlcblxuICAvLyDssLjsobAg642w7J207YSwIOq0gOugqFxuICBkYXRhU291cmNlPzoge1xuICAgIHN0cmF0ZWd5OiBcInNhbXBsZVwiIHwgXCJpZHNcIiB8IFwicXVlcnlcIiB8IFwiZmlsZVwiIHwgXCJyZWNlbnRcIiB8IFwicmFuZG9tXCI7XG4gICAgY29uZmlnPzogdW5rbm93bjsgLy8g7KCE656167OEIOyEpOyglVxuICB9O1xuXG4gIC8vIO2ZleyepeyEsVxuICBba2V5OiBzdHJpbmddOiB1bmtub3duOyAvLyDsgqzsmqnsnpAg7KCV7J2YIOuplO2DgOuNsOydtO2EsFxufTtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVkQ29sdW1uVHlwZSA9IFwiU1RPUkVEXCIgfCBcIlZJUlRVQUxcIjtcbmV4cG9ydCB0eXBlIEdlbmVyYXRlZENvbHVtbiA9IHtcbiAgdHlwZTogR2VuZXJhdGVkQ29sdW1uVHlwZTtcbiAgZXhwcmVzc2lvbjogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIENvbW1vblByb3AgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbnVsbGFibGU/OiBib29sZWFuO1xuICB0b0ZpbHRlcj86IHRydWU7XG4gIGRlc2M/OiBzdHJpbmc7XG4gIGRiRGVmYXVsdD86IHN0cmluZztcbiAgZ2VuZXJhdGVkPzogR2VuZXJhdGVkQ29sdW1uO1xuICBjb25lPzogQ29uZTsgLy8gY29uZSDrqZTtg4DrjbDsnbTthLBcbn07XG5cbi8qKlxuICogcHJvcOydmCDshKTrqoXsnYQg67CY7ZmY7ZWp64uI64ukLlxuICpcbiAqIGNvbmUubm90ZeqwgCDsnojsnLzrqbQg7Jqw7ISgIOyCrOyaqe2VmOqzoCwg7JeG7Jy866m0IHByb3AuZGVzY+ulvCDsgqzsmqntlanri4jri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdGlvbihpdGVtOiB7IGRlc2M/OiBzdHJpbmc7IGNvbmU/OiBDb25lIH0pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaXRlbS5jb25lPy5ub3RlIHx8IGl0ZW0uZGVzYztcbn1cbmV4cG9ydCB0eXBlIEludGVnZXJQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJpbnRlZ2VyXCI7XG59OyAvLyBQRzogaW50ZWdlciAvIFRTOiBudW1iZXIgLyBKU09OOiBudW1iZXJcbmV4cG9ydCB0eXBlIEludGVnZXJBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImludGVnZXJbXVwiO1xufTsgLy8gUEc6IGludGVnZXJbXSAvIFRTOiBudW1iZXJbXSAvIEpTT046IG51bWJlcltdXG5leHBvcnQgdHlwZSBCaWdJbnRlZ2VyUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiYmlnSW50ZWdlclwiO1xufTsgLy8gUEc6IGJpZ2ludCAvIFRTOiBiaWdpbnQgLyBKU09OOiBiaWdpbnRcbmV4cG9ydCB0eXBlIEJpZ0ludGVnZXJBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImJpZ0ludGVnZXJbXVwiO1xufTsgLy8gUEc6IGJpZ2ludFtdIC8gVFM6IGJpZ2ludFtdIC8gSlNPTjogYmlnaW50W11cblxuLyoqXG4gKiBab2QgNCBTdHJpbmcgRm9ybWF0IO2DgOyehVxuICogZW50aXR5Lmpzb27sl5DshJwgc3RyaW5nIO2DgOyeheydmCBwcm9w7JeQIHpvZEZvcm1hdCDsmLXshZjsnYQg7KeA7KCV7ZWY7JesXG4gKiBCYXNlU2NoZW1hIOyDneyEsSDsi5wgWm9k7J2YIHN0cmluZyBmb3JtYXQgdmFsaWRhdGlvbuydhCDsoIHsmqntlanri4jri6QuXG4gKi9cbmV4cG9ydCBjb25zdCBab2RTdHJpbmdGb3JtYXQgPSB6LmVudW0oW1xuICAvLyDquLDrs7gg7Y+s66e3XG4gIFwiZW1haWxcIixcbiAgXCJ1dWlkXCIsXG4gIFwidXJsXCIsXG4gIFwiaHR0cFVybFwiLFxuICBcImhvc3RuYW1lXCIsXG4gIFwiZW1vamlcIixcbiAgXCJiYXNlNjRcIixcbiAgXCJiYXNlNjR1cmxcIixcbiAgXCJoZXhcIixcbiAgXCJqd3RcIixcbiAgXCJuYW5vaWRcIixcbiAgXCJjdWlkXCIsXG4gIFwiY3VpZDJcIixcbiAgXCJ1bGlkXCIsXG4gIFwiaXB2NFwiLFxuICBcImlwdjZcIixcbiAgXCJtYWNcIixcbiAgXCJjaWRydjRcIixcbiAgXCJjaWRydjZcIixcbiAgLy8gaGFzaCDtj6zrp7cgKOyVjOqzoOumrOymmOuzhClcbiAgXCJoYXNoTWQ1XCIsXG4gIFwiaGFzaFNoYTFcIixcbiAgXCJoYXNoU2hhMjU2XCIsXG4gIFwiaGFzaFNoYTM4NFwiLFxuICBcImhhc2hTaGE1MTJcIixcbiAgLy8gSVNPIO2PrOunt1xuICBcImlzb0RhdGVcIixcbiAgXCJpc29UaW1lXCIsXG4gIFwiaXNvRGF0ZXRpbWVcIixcbiAgXCJpc29EdXJhdGlvblwiLFxuXSk7XG5leHBvcnQgdHlwZSBab2RTdHJpbmdGb3JtYXQgPSB6LmluZmVyPHR5cGVvZiBab2RTdHJpbmdGb3JtYXQ+O1xuXG5leHBvcnQgdHlwZSBTdHJpbmdQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJzdHJpbmdcIjtcbiAgbGVuZ3RoPzogbnVtYmVyOyAvLyBQRzogdmFyY2hhcihuKSwgdGV4dCAvIFRTOiBzdHJpbmcgLyBKU09OOiBzdHJpbmdcbiAgem9kRm9ybWF0PzogWm9kU3RyaW5nRm9ybWF0O1xufTsgLy8gUEc6IHRleHQgLyBUUzogc3RyaW5nIC8gSlNPTjogc3RyaW5nXG5leHBvcnQgdHlwZSBTdHJpbmdBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInN0cmluZ1tdXCI7XG4gIGxlbmd0aD86IG51bWJlcjsgLy8gUEc6IHZhcmNoYXIobilbXSwgdGV4dFtdIC8gVFM6IHN0cmluZ1tdIC8gSlNPTjogc3RyaW5nW11cbiAgem9kRm9ybWF0PzogWm9kU3RyaW5nRm9ybWF0O1xufTsgLy8gUEc6IHZhcmNoYXIobilbXSwgdGV4dFtdIC8gVFM6IHN0cmluZ1tdIC8gSlNPTjogc3RyaW5nW11cbmV4cG9ydCB0eXBlIEVudW1Qcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJlbnVtXCI7XG4gIGlkOiBzdHJpbmc7XG4gIGxlbmd0aD86IG51bWJlcjtcbn07IC8vIFBHOiB0ZXh0IC8gVFM6IHN0cmluZyAvIEpTT046IHN0cmluZ1xuZXhwb3J0IHR5cGUgRW51bUFycmF5UHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiZW51bVtdXCI7XG4gIGlkOiBzdHJpbmc7XG59OyAvLyBQRzogdGV4dFtdIC8gVFM6IHN0cmluZ1tdIC8gSlNPTjogc3RyaW5nW11cbmV4cG9ydCB0eXBlIE51bWJlclByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcIm51bWJlclwiO1xuICBwcmVjaXNpb24/OiBudW1iZXI7IC8vIFBHOiBudW1lcmljKHAsIHMpIC8gVFM6IG51bWJlciAvIEpTT046IG51bWJlclxuICBzY2FsZT86IG51bWJlcjsgLy8gUEc6IG51bWVyaWMocCwgcykgLyBUUzogbnVtYmVyIC8gSlNPTjogbnVtYmVyXG4gIG51bWJlclR5cGU/OiBcInJlYWxcIiB8IFwiZG91YmxlIHByZWNpc2lvblwiIHwgXCJudW1lcmljXCI7IC8vIOq4sOuzuOqwkjogbnVtZXJpY1xufTsgLy8gUEc6IG51bWVyaWMocCwgcykgLyBUUzogbnVtYmVyIC8gSlNPTjogbnVtYmVyXG5leHBvcnQgdHlwZSBOdW1iZXJBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcIm51bWJlcltdXCI7XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgc2NhbGU/OiBudW1iZXI7XG4gIG51bWJlclR5cGU/OiBcInJlYWxcIiB8IFwiZG91YmxlIHByZWNpc2lvblwiIHwgXCJudW1lcmljXCI7IC8vIOq4sOuzuOqwkjogbnVtZXJpY1xufTsgLy8gUEc6IG51bWVyaWMocCwgcylbXSAvIFRTOiBudW1iZXJbXSAvIEpTT046IG51bWJlcltdXG5leHBvcnQgdHlwZSBOdW1lcmljUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwibnVtZXJpY1wiO1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIHNjYWxlPzogbnVtYmVyO1xufTsgLy8gUEc6IG51bWVyaWMocCwgcykgLyBUUzogc3RyaW5nIC8gSlNPTjogc3RyaW5nXG5leHBvcnQgdHlwZSBOdW1lcmljQXJyYXlQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJudW1lcmljW11cIjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn07IC8vIFBHOiBudW1lcmljKHAsIHMpW10gLyBUUzogc3RyaW5nW10gLyBKU09OOiBzdHJpbmdbXVxuZXhwb3J0IHR5cGUgQm9vbGVhblByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImJvb2xlYW5cIjtcbn07IC8vIFBHOiBib29sZWFuIC8gVFM6IGJvb2xlYW4gLyBKU09OOiBib29sZWFuXG5leHBvcnQgdHlwZSBCb29sZWFuQXJyYXlQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJib29sZWFuW11cIjtcbn07IC8vIFBHOiBib29sZWFuW10gLyBUUzogYm9vbGVhbltdIC8gSlNPTjogYm9vbGVhbltdXG5leHBvcnQgdHlwZSBEYXRlUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiZGF0ZVwiO1xuICAvLyDquLDrs7jqsJLsnYAgMywgbWljcm9zZWNvbmRz66W8IOyTsOugpOuptCA27J2EIOyNqOyVvO2VqCAoMCB+IDYpXG4gIHByZWNpc2lvbj86IG51bWJlcjtcbn07IC8vIFBHOiB0aW1lc3RhbXB6IC8gVFM6IERhdGUgLyBKU09OOiBzdHJpbmcoSVNPU3RyaW5nKVxuZXhwb3J0IHR5cGUgRGF0ZUFycmF5UHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiZGF0ZVtdXCI7XG4gIC8vIOq4sOuzuOqwkuydgCAzLCBtaWNyb3NlY29uZHPrpbwg7JOw66Ck66m0IDbsnYQg7I2o7JW87ZWoICgwIH4gNilcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xufTsgLy8gUEc6IHRpbWVzdGFtcHR6W10gLyBUUzogRGF0ZVtdIC8gSlNPTjogc3RyaW5nW11cbmV4cG9ydCB0eXBlIEpzb25Qcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJqc29uXCI7XG4gIGlkOiBzdHJpbmc7XG59OyAvLyBQRzoganNvbiAvIFRTOiBhbnkoaWQpIC8gSlNPTjogYW55XG5leHBvcnQgdHlwZSBTZWFyY2hUZXh0U291cmNlQ29sdW1uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgU2VhcmNoVGV4dFByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInNlYXJjaFRleHRcIjtcbiAgc291cmNlQ29sdW1uczogU2VhcmNoVGV4dFNvdXJjZUNvbHVtbltdO1xufTsgLy8gUEc6IHRleHQgKGdlbmVyYXRlZCkgLyBUUzogc3RyaW5nIC8gSlNPTjogc3RyaW5nXG5leHBvcnQgdHlwZSBVdWlkUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwidXVpZFwiO1xufTsgLy8gUEc6IHV1aWQgLyBUUzogc3RyaW5nIC8gSlNPTjogc3RyaW5nXG5leHBvcnQgdHlwZSBVdWlkQXJyYXlQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJ1dWlkW11cIjtcbn07IC8vIFBHOiB1dWlkW10gLyBUUzogc3RyaW5nW10gLyBKU09OOiBzdHJpbmdbXVxuZXhwb3J0IHR5cGUgVmlydHVhbFByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInZpcnR1YWxcIjtcbiAgaWQ6IHN0cmluZztcbiAgdmlydHVhbFR5cGU/OiBcInF1ZXJ5XCIgfCBcImNvZGVcIjsgLy8gZGVmYXVsdDogXCJjb2RlXCJcbn07IC8vIFBHOiBub25lIC8gVFM6IGFueShpZCkgLyBKU09OOiBhbnlcbmV4cG9ydCB0eXBlIFZlY3RvclByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInZlY3RvclwiO1xuICBkaW1lbnNpb25zOiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgVmVjdG9yQXJyYXlQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJ2ZWN0b3JbXVwiO1xuICBkaW1lbnNpb25zOiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgVHNWZWN0b3JQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJ0c3ZlY3RvclwiO1xufTtcbmV4cG9ydCB0eXBlIFJlbGF0aW9uVHlwZSA9IFwiSGFzTWFueVwiIHwgXCJCZWxvbmdzVG9PbmVcIiB8IFwiTWFueVRvTWFueVwiIHwgXCJPbmVUb09uZVwiO1xuZXhwb3J0IHR5cGUgUmVsYXRpb25PbiA9IFwiQ0FTQ0FERVwiIHwgXCJTRVQgTlVMTFwiIHwgXCJOTyBBQ1RJT05cIiB8IFwiU0VUIERFRkFVTFRcIiB8IFwiUkVTVFJJQ1RcIjtcbnR5cGUgX1JlbGF0aW9uUHJvcCA9IHtcbiAgdHlwZTogXCJyZWxhdGlvblwiO1xuICBuYW1lOiBzdHJpbmc7XG4gIHdpdGg6IHN0cmluZztcbiAgbnVsbGFibGU/OiBib29sZWFuOyAvLyBERUZBVUxUOiBmYWxzZVxuICB0b0ZpbHRlcj86IHRydWU7IC8vIERFRkFVTFQ6IGZhbHNlXG4gIGRlc2M/OiBzdHJpbmc7XG4gIGNvbmU/OiBDb25lOyAvLyBjb25lIOuplO2DgOuNsOydtO2EsFxufTtcbmV4cG9ydCB0eXBlIE9uZVRvT25lUmVsYXRpb25Qcm9wID0gX1JlbGF0aW9uUHJvcCAmIHtcbiAgcmVsYXRpb25UeXBlOiBcIk9uZVRvT25lXCI7XG4gIGN1c3RvbUpvaW5DbGF1c2U/OiBzdHJpbmc7XG59ICYgKFxuICAgIHwge1xuICAgICAgICBoYXNKb2luQ29sdW1uOiB0cnVlO1xuICAgICAgICB1c2VDb25zdHJhaW50PzogYm9vbGVhbjsgLy8gREVGQVVMVDogdHJ1ZVxuICAgICAgICBvblVwZGF0ZT86IFJlbGF0aW9uT247IC8vIERFRkFVTFQ6IFJFU1RSSUNUXG4gICAgICAgIG9uRGVsZXRlPzogUmVsYXRpb25PbjsgLy8gREVGQVVMVDogUkVTVFJJQ1RcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgaGFzSm9pbkNvbHVtbjogZmFsc2U7XG4gICAgICB9XG4gICk7XG5leHBvcnQgdHlwZSBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AgPSBfUmVsYXRpb25Qcm9wICYge1xuICByZWxhdGlvblR5cGU6IFwiQmVsb25nc1RvT25lXCI7XG4gIGN1c3RvbUpvaW5DbGF1c2U/OiBzdHJpbmc7XG4gIHVzZUNvbnN0cmFpbnQ/OiBib29sZWFuOyAvLyBERUZBVUxUOiB0cnVlXG4gIG9uVXBkYXRlPzogUmVsYXRpb25PbjsgLy8gREVGQVVMVDogUkVTVFJJQ1RcbiAgb25EZWxldGU/OiBSZWxhdGlvbk9uOyAvLyBERUZBVUxUOiBSRVNUUklDVFxufTtcbmV4cG9ydCB0eXBlIEhhc01hbnlSZWxhdGlvblByb3AgPSBfUmVsYXRpb25Qcm9wICYge1xuICByZWxhdGlvblR5cGU6IFwiSGFzTWFueVwiO1xuICBqb2luQ29sdW1uOiBzdHJpbmc7XG4gIGZyb21Db2x1bW4/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgTWFueVRvTWFueVJlbGF0aW9uUHJvcCA9IF9SZWxhdGlvblByb3AgJiB7XG4gIHJlbGF0aW9uVHlwZTogXCJNYW55VG9NYW55XCI7XG4gIGpvaW5UYWJsZTogYCR7c3RyaW5nfV9fJHtzdHJpbmd9YDtcbiAgb25VcGRhdGU6IFJlbGF0aW9uT247XG4gIG9uRGVsZXRlOiBSZWxhdGlvbk9uO1xufTtcbmV4cG9ydCB0eXBlIFJlbGF0aW9uUHJvcCA9XG4gIHwgT25lVG9PbmVSZWxhdGlvblByb3BcbiAgfCBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BcbiAgfCBIYXNNYW55UmVsYXRpb25Qcm9wXG4gIHwgTWFueVRvTWFueVJlbGF0aW9uUHJvcDtcblxuZXhwb3J0IHR5cGUgRW50aXR5UHJvcCA9XG4gIHwgSW50ZWdlclByb3BcbiAgfCBJbnRlZ2VyQXJyYXlQcm9wXG4gIHwgQmlnSW50ZWdlclByb3BcbiAgfCBCaWdJbnRlZ2VyQXJyYXlQcm9wXG4gIHwgU3RyaW5nUHJvcFxuICB8IFN0cmluZ0FycmF5UHJvcFxuICB8IEVudW1Qcm9wXG4gIHwgRW51bUFycmF5UHJvcFxuICB8IE51bWJlclByb3BcbiAgfCBOdW1iZXJBcnJheVByb3BcbiAgfCBOdW1lcmljUHJvcFxuICB8IE51bWVyaWNBcnJheVByb3BcbiAgfCBCb29sZWFuUHJvcFxuICB8IEJvb2xlYW5BcnJheVByb3BcbiAgfCBEYXRlUHJvcFxuICB8IERhdGVBcnJheVByb3BcbiAgfCBVdWlkUHJvcFxuICB8IFV1aWRBcnJheVByb3BcbiAgfCBKc29uUHJvcFxuICB8IFNlYXJjaFRleHRQcm9wXG4gIHwgVmlydHVhbFByb3BcbiAgfCBWZWN0b3JQcm9wXG4gIHwgVmVjdG9yQXJyYXlQcm9wXG4gIHwgVHNWZWN0b3JQcm9wXG4gIHwgUmVsYXRpb25Qcm9wO1xuXG4vKipcbiAqIFNvbmFtdUZpbGUgVHlwZXNcbiAqXG4gKiDtjIzsnbwg7JeF66Gc65Oc66W8IOychO2VnCBKU09OIO2DgOyeheyeheuLiOuLpC5cbiAqIEVudGl0eeydmCBqc29uIOyGjeyEseyXkOyEnCBpZOuhnCBcIlNvbmFtdUZpbGVcIiDrmJDripQgXCJTb25hbXVGaWxlW11cIuydhCDsp4DsoJXtlZjsl6wg7IKs7Jqp7ZWp64uI64ukLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvbmFtdUZpbGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBtaW1lX3R5cGU6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgU29uYW11RmlsZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICB1cmw6IHouc3RyaW5nKCksXG4gICAgbWltZV90eXBlOiB6LnN0cmluZygpLFxuICAgIHNpemU6IHoubnVtYmVyKCksXG4gIH0pXG4gIC5kZXNjcmliZShcIlNvbmFtdUZpbGVcIik7XG5cbmV4cG9ydCBjb25zdCBTb25hbXVGaWxlQXJyYXlTY2hlbWEgPSB6LmFycmF5KFNvbmFtdUZpbGVTY2hlbWEpLmRlc2NyaWJlKFwiU29uYW11RmlsZVtdXCIpO1xuXG4vKipcbiAqIFNvbmFtdSDsvZTslrTsl5DshJwg7KCc6rO17ZWY64qUIOuCtOyepSBKU09OIO2DgOyehSBJRCDrqqnroZ1cbiAqIOyDiOuhnOyatCDrgrTsnqUg7YOA7J6FIOy2lOqwgCDsi5wg7J20IOuwsOyXtOyXkCDstpTqsIDtlZjrqbQg7J6Q64+Z7Jy866GcIFVJ7JeQIOuFuOy2nOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGNvbnN0IEJVSUxUX0lOX1RZUEVfSURTID0gW1wiU29uYW11RmlsZVwiLCBcIlNvbmFtdUZpbGVbXVwiXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJ1aWx0SW5UeXBlSWQgPSAodHlwZW9mIEJVSUxUX0lOX1RZUEVfSURTKVtudW1iZXJdO1xuXG4vKipcbiAqIHBndmVjdG9yIOqxsOumrCDsl7DsgrDsnpAg7YG0656Y7IqkXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiAtIGB2ZWN0b3JfY29zaW5lX29wc2A6IOy9lOyCrOyduCDqsbDrpqwgKENvc2luZSBEaXN0YW5jZSkgLSDqtozsnqVcbiAqICAgLSBTUUwg7Jew7IKw7J6QOiBgPD0+YFxuICogICAtIOuyoe2EsOydmCDrsKntlqXrp4wg67mE6rWQICjtgazquLAg66y07IucKSwgMSAtIGNvc2luZV9zaW1pbGFyaXR5XG4gKiAgIC0g7YWN7Iqk7Yq4IOyehOuyoOuUqSwg7Iuc66eo7YuxIOqygOyDieyXkCDqsIDsnqUg7J2867CY7KCB7Jy866GcIOyCrOyaqVxuICogICAtIOyCrOyaqSDsmIg6IE9wZW5BSSwgVm95YWdlIOuTsSDrjIDrtoDrtoTsnZgg7J6E67Kg65SpIOuqqOuNuOyXkCDqtozsnqVcbiAqXG4gKiAtIGB2ZWN0b3JfaXBfb3BzYDog64K07KCBIChJbm5lciBQcm9kdWN0KVxuICogICAtIFNRTCDsl7DsgrDsnpA6IGA8Iz5gXG4gKiAgIC0g65GQIOuyoe2EsOydmCDrgrTsoIHsnYQg6rOE7IKwIChzdW0oYVtpXSAqIGJbaV0pKVxuICogICAtIOygleq3nO2ZlOuQnCDrsqHthLDsl5DshJwg7L2U7IKs7J24IOycoOyCrOuPhOyZgCDrj5nsnbztlZwg6rKw6rO8XG4gKiAgIC0g6rCS7J20IO2BtOyImOuhnSDsnKDsgqwgKOydjOyImCDsl7DsgrDsnpDsnbTrr4DroZwgT1JERVIgQlnsl5DshJwg7KO87J2YKVxuICogICAtIOyCrOyaqSDsmIg6IOydtOuvuCDsoJXqt5ztmZTrkJwg7J6E67Kg65Sp7JeQ7IScIOqwgOyepSDruaDrpbgg7ISx64qlXG4gKlxuICogLSBgdmVjdG9yX2wyX29wc2A6IOycoO2BtOumrOuTnCDqsbDrpqwgKEwyIERpc3RhbmNlKVxuICogICAtIFNRTCDsl7DsgrDsnpA6IGA8LT5gXG4gKiAgIC0g65GQIOuyoe2EsCDqsITsnZgg7KeB7ISgIOqxsOumrOulvCDqs4TsgrAgKHNxcnQoc3VtKChhW2ldIC0gYltpXSleMikpKVxuICogICAtIOuyoe2EsOydmCDtgazquLAobWFnbml0dWRlKeqwgCDspJHsmpTtlaAg65WMIOyCrOyaqVxuICogICAtIOyCrOyaqSDsmIg6IOydtOuvuOyngCDsnKDsgqzrj4QsIOygiOuMgOyggSDqsbDrpqwg7Lih7KCV7J20IO2VhOyalO2VnCDqsr3smrBcbiAqL1xuZXhwb3J0IHR5cGUgVmVjdG9yT3BzID0gXCJ2ZWN0b3JfY29zaW5lX29wc1wiIHwgXCJ2ZWN0b3JfaXBfb3BzXCIgfCBcInZlY3Rvcl9sMl9vcHNcIjtcblxuZXhwb3J0IGNvbnN0IEtub3duT3BjbGFzc1ZhbHVlcyA9IFtcbiAgXCJnaW5fdHJnbV9vcHNcIixcbiAgXCJnaXN0X3RyZ21fb3BzXCIsXG4gIFwiZ2luX2JpZ21fb3BzXCIsXG4gIFwidmVjdG9yX2Nvc2luZV9vcHNcIixcbiAgXCJ2ZWN0b3JfaXBfb3BzXCIsXG4gIFwidmVjdG9yX2wyX29wc1wiLFxuICBcInBncm9vbmdhX3ZhcmNoYXJfZnVsbF90ZXh0X3NlYXJjaF9vcHNfdjJcIixcbiAgXCJwZ3Jvb25nYV9qc29uYl9mdWxsX3RleHRfc2VhcmNoX29wc192MlwiLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEtub3duT3BjbGFzcyA9ICh0eXBlb2YgS25vd25PcGNsYXNzVmFsdWVzKVtudW1iZXJdO1xuXG50eXBlIEVudGl0eUluZGV4Q29sdW1uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIG51bGxzRmlyc3Q/OiBib29sZWFuO1xuICBzb3J0T3JkZXI/OiBcIkFTQ1wiIHwgXCJERVNDXCI7XG4gIC8qKiBwZ3ZlY3RvciDsnbjrjbHsiqTsl5DshJwg7IKs7Jqp7ZWgIOqxsOumrCDsl7DsgrDsnpAgKHZlY3RvciDsu6zrn7zsl5Drp4wg7KCB7JqpKSAqL1xuICB2ZWN0b3JPcHM/OiBWZWN0b3JPcHM7XG4gIC8qKiBnZW5lcmljIOyduOuNseyKpCBvcGNsYXNzICh2ZWN0b3JPcHPripQg7ZWY7JyE7Zi47ZmYIOuqqeyggeycvOuhnCDsnKDsp4ApICovXG4gIG9wY2xhc3M/OiBLbm93bk9wY2xhc3MgfCBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRW50aXR5SW5kZXggPSB7XG4gIHR5cGU6IFwiaW5kZXhcIiB8IFwidW5pcXVlXCIgfCBcImhuc3dcIiB8IFwiaXZmZmxhdFwiO1xuICBjb2x1bW5zOiBFbnRpdHlJbmRleENvbHVtbltdO1xuICBuYW1lOiBzdHJpbmc7XG4gIHVzaW5nPzogXCJidHJlZVwiIHwgXCJoYXNoXCIgfCBcImdpblwiIHwgXCJnaXN0XCIgfCBcInBncm9vbmdhXCI7XG4gIG51bGxzTm90RGlzdGluY3Q/OiBib29sZWFuOyAvLyB1bmlxdWUgaW5kZXggb25seVxuICAvKipcbiAgICogSE5TVyAoSGllcmFyY2hpY2FsIE5hdmlnYWJsZSBTbWFsbCBXb3JsZCkg7J24642x7IqkOiDqsIEg64W465Oc7J2YIOy1nOuMgCDsl7DqsrAg7IiYXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiDqt7jrnpjtlITsl5DshJwg6rCBIOuFuOuTnOqwgCDqsIDsp4gg7IiYIOyeiOuKlCDstZzrjIAg7Jew6rKwIOyImOyeheuLiOuLpC5cbiAgICogSE5TV+uKlCDruaDrpbgg6rKA7IOJIOyGjeuPhOyZgCDrhpLsnYAg7KCV7ZmV64+E66W8IOygnOqzte2VmOuvgOuhnCDqtozsnqXrkKnri4jri6QuXG4gICAqIC0g6riw67O46rCSOiAxNlxuICAgKiAtIOuylOychDogMiB+IDEwMFxuICAgKiAtIOuGkuydhOyImOuhnTog7KCV7ZmV64+E4oaRLCDruYzrk5wg7Iuc6rCE4oaRLCDrqZTrqqjrpqzihpFcbiAgICogLSDqtozsnqU6IOu5oOuluCDruYzrk5woOCksIOq3oO2YlSgxNiksIOuGkuydgCDsoJXtmZXrj4QoMzIpLCDstZzqs6Ag7KCV7ZmV64+EKDY0KVxuICAgKi9cbiAgbT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEhOU1cgKEhpZXJhcmNoaWNhbCBOYXZpZ2FibGUgU21hbGwgV29ybGQpIOyduOuNseyKpDog6rWs7ISxIOyLnCDtg5Dsg4kg67KU7JyEXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiDsnbjrjbHsiqQg6rWs7ISxIOyLnCDqsIEg64W465Oc7JeQ7IScIO2DkOyDie2VoCDrspTsnITsnoXri4jri6QuXG4gICAqIC0g6riw67O46rCSOiA2NFxuICAgKiAtIOuylOychDogNCB+IDEwMDBcbiAgICogLSDrhpLsnYTsiJjroZ06IOygle2ZleuPhOKGkSwg67mM65OcIOyLnOqwhOKGkVxuICAgKiAtIOq2jOyepTog67mg66W4IOu5jOuTnCgzMiksIOq3oO2YlSg2NCksIOuGkuydgCDsoJXtmZXrj4QoMTI4KSwg7LWc6rOgIOygle2ZleuPhCgyNTYpXG4gICAqL1xuICBlZkNvbnN0cnVjdGlvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIElWRkZsYXQgKEludmVydGVkIEZpbGUgd2l0aCBGbGF0IENvbXByZXNzaW9uKSDsnbjrjbHsiqQ6IO2BtOufrOyKpO2EsOungSDrpqzsiqTtirgg7IiYXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiDrsqHthLDrpbwg7YG065+s7Iqk7YSw66eB7ZWgIOuyhO2CtyDsiJjrpbwg7KeA7KCV7ZWp64uI64ukLlxuICAgKiBJVkZGbGF07J2AIOu5oOuluCDruYzrk5zsmYAg64Ku7J2AIOuplOuqqOumrCDsgqzsmqnsnbQg7ZWE7JqU7ZWgIOuVjCDsgqzsmqntlanri4jri6QuXG4gICAqIC0g6raM7J6l6rCSOiBzcXJ0KHJvd19jb3VudCkgfiByb3dfY291bnQgLyAxMDAwXG4gICAqIC0g7JiI7IucOiAxMCwwMDDtlokg4oaSIDEwMCwgMTAwLDAwMO2WiSDihpIgMzAwLCAxLDAwMCwwMDDtlokg4oaSIDEwMDBcbiAgICogLSDrp47snYTsiJjroZ0g7KCV7ZmV64+E4oaRLCDqsoDsg4kg7IaN64+E4oaTXG4gICAqL1xuICBsaXN0cz86IG51bWJlcjtcbn07XG5cbi8vIFN1YnNldEZpZWxkIO2DgOyehTogc3RyaW5nIOuYkOuKlCBpbnRlcm5hbCDsmLXshZjsnbQg7J6I64qUIOqwneyytFxuZXhwb3J0IHR5cGUgU3Vic2V0RmllbGQgPSBzdHJpbmcgfCB7IGZpZWxkOiBzdHJpbmc7IGludGVybmFsPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU3Vic2V0RmllbGQoZjogU3Vic2V0RmllbGQpOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIGYgPT09IFwic3RyaW5nXCIgPyBmIDogZi5maWVsZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVybmFsU3Vic2V0RmllbGQoZjogU3Vic2V0RmllbGQpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBmICE9PSBcInN0cmluZ1wiICYmIGYuaW50ZXJuYWwgPT09IHRydWU7XG59XG5cbi8qKlxuICogU3Vic2V0RGVmOiBTdWJzZXQg7KCV7J2YXG4gKlxuICog7ZWY7JyEIO2YuO2ZmOyEseydhCDsnITtlbQgU3Vic2V0RmllbGRbXSDrsLDsl7Qg7ZiV7YOc64+EIOyngOybkO2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IHR5cGUgU3Vic2V0RGVmID1cbiAgfCBTdWJzZXRGaWVsZFtdIC8vIOq4sOyhtCDrsLDsl7Qg7ZiV7YOcXG4gIHwge1xuICAgICAgLy8g7IOI66Gc7Jq0IOqwneyytCDtmJXtg5xcbiAgICAgIGZpZWxkczogU3Vic2V0RmllbGRbXTtcbiAgICAgIGNvbmU/OiBDb25lO1xuICAgIH07XG5cbi8qKlxuICogRW51bURlZjogRW51bSDsoJXsnZhcbiAqXG4gKiDtlZjsnIQg7Zi47ZmY7ISx7J2EIOychO2VtCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IO2Yle2DnOuPhCDsp4Dsm5Dtlanri4jri6QuXG4gKi9cbmV4cG9ydCB0eXBlIEVudW1EZWYgPVxuICB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gLy8g6riw7KG0IFJlY29yZCDtmJXtg5xcbiAgfCB7XG4gICAgICAvLyDsg4jroZzsmrQg6rCd7LK0IO2Yle2DnFxuICAgICAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgICAgY29uZT86IENvbmU7XG4gICAgfTtcblxuLyoqXG4gKiBTdWJzZXREZWbqsIAg7IOI66Gc7Jq0IOqwneyytCDtmJXtg5zsnbjsp4Ag7ZmV7J24XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N1YnNldERlZldpdGhDb25lKGRlZjogU3Vic2V0RGVmKTogZGVmIGlzIHsgZmllbGRzOiBTdWJzZXRGaWVsZFtdOyBjb25lPzogQ29uZSB9IHtcbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRlZikgJiYgXCJmaWVsZHNcIiBpbiBkZWY7XG59XG5cbi8qKlxuICogRW51bURlZuqwgCDsg4jroZzsmrQg6rCd7LK0IO2Yle2DnOyduOyngCDtmZXsnbhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW51bURlZldpdGhDb25lKFxuICBkZWY6IEVudW1EZWYsXG4pOiBkZWYgaXMgeyB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47IGNvbmU/OiBDb25lIH0ge1xuICByZXR1cm4gKFxuICAgIFwidmFsdWVzXCIgaW4gZGVmICYmICEoXCJjb25lXCIgaW4gZGVmICYmIGRlZi5jb25lID09PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXMoZGVmKS5sZW5ndGggPiAxKVxuICApO1xufVxuXG4vKipcbiAqIFN1YnNldERlZuyXkOyEnCBmaWVsZHMg7LaU7LacXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWJzZXRGaWVsZHMoZGVmOiBTdWJzZXREZWYpOiBTdWJzZXRGaWVsZFtdIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGVmKSA/IGRlZiA6IGRlZi5maWVsZHM7XG59XG5cbi8qKlxuICogRW51bURlZuyXkOyEnCB2YWx1ZXMg7LaU7LacXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnVtRGVmVmFsdWVzKGRlZjogRW51bURlZik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4gaXNFbnVtRGVmV2l0aENvbmUoZGVmKSA/IGRlZi52YWx1ZXMgOiBkZWY7XG59XG5cbmV4cG9ydCB0eXBlIEVudGl0eUpzb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHBhcmVudElkPzogc3RyaW5nO1xuICB0YWJsZTogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgY29uZT86IENvbmU7IC8vIGNvbmUg66mU7YOA642w7J207YSwXG4gIHByb3BzOiBFbnRpdHlQcm9wW107XG4gIGluZGV4ZXM6IEVudGl0eUluZGV4W107XG4gIHN1YnNldHM6IHtcbiAgICBbc3Vic2V0OiBzdHJpbmddOiBTdWJzZXREZWY7XG4gIH07XG4gIGVudW1zOiB7XG4gICAgW2VudW1JZDogc3RyaW5nXTogRW51bURlZjtcbiAgfTtcbn07XG5leHBvcnQgdHlwZSBFbnRpdHlTdWJzZXRSb3cgPSB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGhhczoge1xuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG4gIH07XG4gIGlzSW50ZXJuYWw6IHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICB9O1xuICBjaGlsZHJlbjogRW50aXR5U3Vic2V0Um93W107XG4gIHByZWZpeGVzOiBzdHJpbmdbXTtcbiAgcmVsYXRpb25FbnRpdHk/OiBzdHJpbmc7XG4gIGlzT3Blbj86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgRmxhdHRlblN1YnNldFJvdyA9IE9taXQ8RW50aXR5U3Vic2V0Um93LCBcImNoaWxkcmVuXCI+O1xuXG4vKlxuICBQcm9wTm9kZVxuKi9cblxuLyoqXG4gKiDsl5Tti7Dti7DsnZgg7ZWE65OcIOq1rOyhsOulvCDtirjrpqwg7ZiV7YOc66GcIO2RnO2YhO2VmOuKlCDspJHqsIQg64W465Oc7J6F64uI64ukLlxuICpcbiAqICoq66qp7KCBKio6IEVudGl0eeydmCBzdWJzZXQg7ZWE65OcIO2RnO2YhOyLnSjsmIg6IFwiaWRcIiwgXCJ1c2VyLm5hbWVcIiwgXCJ0YWdzW11cIinsnYRcbiAqIOyerOq3gOyggeyduCDtirjrpqwg6rWs7KGw66GcIO2MjOyLse2VmOyXrCBab2Qg7Iqk7YKk66eIIOyDneyEseydmCDspJHqsIQg64uo6rOE66GcIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiAqKuuzgO2ZmCDtnZDrpoQqKjpcbiAqIEVudGl0eSBzdWJzZXQg4oaSIEVudGl0eVByb3BOb2RlICjtirjrpqwg6rWs7KGwKSDihpIgWm9kIOyKpO2CpOuniCDihpIgUmVuZGVyaW5nTm9kZSAoVUnsmqkpXG4gKlxuICogKipub2RlVHlwZSoqOlxuICogLSBcInBsYWluXCI6IOuLqOydvCDtlYTrk5wgKOyYiDogXCJpZFwiLCBcIm5hbWVcIilcbiAqIC0gXCJvYmplY3RcIjog7KSR7LKpIOqwneyytCAo7JiIOiBcInVzZXIubmFtZVwiIOKGkiB1c2VyIOqwneyytClcbiAqIC0gXCJhcnJheVwiOiDrsLDsl7QgKOyYiDogXCJ0YWdzW11cIiDihpIgdGFncyDrsLDsl7QpXG4gKlxuICogKirsgqzsmqkg7JyE7LmYKio6IGVudGl0eS1jb252ZXJ0ZXIudHPsnZggcHJvcE5vZGVUb1pvZFR5cGUoKVxuICovXG5leHBvcnQgdHlwZSBFbnRpdHlQcm9wTm9kZSA9XG4gIHwge1xuICAgICAgbm9kZVR5cGU6IFwicGxhaW5cIjtcbiAgICAgIHByb3A6IEVudGl0eVByb3A7XG4gICAgfVxuICB8IHtcbiAgICAgIG5vZGVUeXBlOiBcIm9iamVjdFwiIHwgXCJhcnJheVwiO1xuICAgICAgcHJvcD86IEVudGl0eVByb3A7XG4gICAgICBjaGlsZHJlbjogRW50aXR5UHJvcE5vZGVbXTtcbiAgICB9O1xuXG4vKlxuICBQcm9wIFR5cGUgR3VhcmRzXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZWdlclNpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgSW50ZWdlclByb3Age1xuICByZXR1cm4gKHAgYXMgSW50ZWdlclByb3ApPy50eXBlID09PSBcImludGVnZXJcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVnZXJBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgSW50ZWdlckFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBJbnRlZ2VyQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJpbnRlZ2VyW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVnZXJQcm9wKHA6IHVua25vd24pOiBwIGlzIEludGVnZXJQcm9wIHwgSW50ZWdlckFycmF5UHJvcCB7XG4gIHJldHVybiBpc0ludGVnZXJTaW5nbGVQcm9wKHApIHx8IGlzSW50ZWdlckFycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpZ0ludGVnZXJTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIEJpZ0ludGVnZXJQcm9wIHtcbiAgcmV0dXJuIChwIGFzIEJpZ0ludGVnZXJQcm9wKT8udHlwZSA9PT0gXCJiaWdJbnRlZ2VyXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaWdJbnRlZ2VyQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIEJpZ0ludGVnZXJBcnJheVByb3Age1xuICByZXR1cm4gKHAgYXMgQmlnSW50ZWdlckFycmF5UHJvcCk/LnR5cGUgPT09IFwiYmlnSW50ZWdlcltdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaWdJbnRlZ2VyUHJvcChwOiB1bmtub3duKTogcCBpcyBCaWdJbnRlZ2VyUHJvcCB8IEJpZ0ludGVnZXJBcnJheVByb3Age1xuICByZXR1cm4gaXNCaWdJbnRlZ2VyU2luZ2xlUHJvcChwKSB8fCBpc0JpZ0ludGVnZXJBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIFN0cmluZ1Byb3Age1xuICByZXR1cm4gKHAgYXMgU3RyaW5nUHJvcCk/LnR5cGUgPT09IFwic3RyaW5nXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgU3RyaW5nQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIFN0cmluZ0FycmF5UHJvcCk/LnR5cGUgPT09IFwic3RyaW5nW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ1Byb3AocDogdW5rbm93bik6IHAgaXMgU3RyaW5nUHJvcCB8IFN0cmluZ0FycmF5UHJvcCB7XG4gIHJldHVybiBpc1N0cmluZ1NpbmdsZVByb3AocCkgfHwgaXNTdHJpbmdBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFbnVtU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBFbnVtUHJvcCB7XG4gIHJldHVybiAocCBhcyBFbnVtUHJvcCk/LnR5cGUgPT09IFwiZW51bVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRW51bUFycmF5UHJvcChwOiB1bmtub3duKTogcCBpcyBFbnVtQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIEVudW1BcnJheVByb3ApPy50eXBlID09PSBcImVudW1bXVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRW51bVByb3AocDogdW5rbm93bik6IHAgaXMgRW51bVByb3AgfCBFbnVtQXJyYXlQcm9wIHtcbiAgcmV0dXJuIGlzRW51bVNpbmdsZVByb3AocCkgfHwgaXNFbnVtQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBOdW1iZXJQcm9wIHtcbiAgcmV0dXJuIChwIGFzIE51bWJlclByb3ApPy50eXBlID09PSBcIm51bWJlclwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIE51bWJlckFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBOdW1iZXJBcnJheVByb3ApPy50eXBlID09PSBcIm51bWJlcltdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXJQcm9wKHA6IHVua25vd24pOiBwIGlzIE51bWJlclByb3AgfCBOdW1iZXJBcnJheVByb3Age1xuICByZXR1cm4gaXNOdW1iZXJTaW5nbGVQcm9wKHApIHx8IGlzTnVtYmVyQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpY1NpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgTnVtZXJpY1Byb3Age1xuICByZXR1cm4gKHAgYXMgTnVtZXJpY1Byb3ApPy50eXBlID09PSBcIm51bWVyaWNcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgTnVtZXJpY0FycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBOdW1lcmljQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJudW1lcmljW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNQcm9wKHA6IHVua25vd24pOiBwIGlzIE51bWVyaWNQcm9wIHwgTnVtZXJpY0FycmF5UHJvcCB7XG4gIHJldHVybiBpc051bWVyaWNTaW5nbGVQcm9wKHApIHx8IGlzTnVtZXJpY0FycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW5TaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIEJvb2xlYW5Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIEJvb2xlYW5Qcm9wKT8udHlwZSA9PT0gXCJib29sZWFuXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIEJvb2xlYW5BcnJheVByb3Age1xuICByZXR1cm4gKHAgYXMgQm9vbGVhbkFycmF5UHJvcCk/LnR5cGUgPT09IFwiYm9vbGVhbltdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuUHJvcChwOiB1bmtub3duKTogcCBpcyBCb29sZWFuUHJvcCB8IEJvb2xlYW5BcnJheVByb3Age1xuICByZXR1cm4gaXNCb29sZWFuU2luZ2xlUHJvcChwKSB8fCBpc0Jvb2xlYW5BcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBEYXRlUHJvcCB7XG4gIHJldHVybiAocCBhcyBEYXRlUHJvcCk/LnR5cGUgPT09IFwiZGF0ZVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZUFycmF5UHJvcChwOiB1bmtub3duKTogcCBpcyBEYXRlQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIERhdGVBcnJheVByb3ApPy50eXBlID09PSBcImRhdGVbXVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZVByb3AocDogdW5rbm93bik6IHAgaXMgRGF0ZVByb3AgfCBEYXRlQXJyYXlQcm9wIHtcbiAgcmV0dXJuIGlzRGF0ZVNpbmdsZVByb3AocCkgfHwgaXNEYXRlQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVXVpZFNpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgVXVpZFByb3Age1xuICByZXR1cm4gKHAgYXMgVXVpZFByb3ApPy50eXBlID09PSBcInV1aWRcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1V1aWRBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgVXVpZEFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBVdWlkQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJ1dWlkW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1V1aWRQcm9wKHA6IHVua25vd24pOiBwIGlzIFV1aWRQcm9wIHwgVXVpZEFycmF5UHJvcCB7XG4gIHJldHVybiBpc1V1aWRTaW5nbGVQcm9wKHApIHx8IGlzVXVpZEFycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0pzb25Qcm9wKHA6IHVua25vd24pOiBwIGlzIEpzb25Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIEpzb25Qcm9wKT8udHlwZSA9PT0gXCJqc29uXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTZWFyY2hUZXh0UHJvcChwOiB1bmtub3duKTogcCBpcyBTZWFyY2hUZXh0UHJvcCB7XG4gIHJldHVybiAocCBhcyBTZWFyY2hUZXh0UHJvcCk/LnR5cGUgPT09IFwic2VhcmNoVGV4dFwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmlydHVhbFByb3AocDogdW5rbm93bik6IHAgaXMgVmlydHVhbFByb3Age1xuICByZXR1cm4gKHAgYXMgVmlydHVhbFByb3ApPy50eXBlID09PSBcInZpcnR1YWxcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZpcnR1YWxDb2RlUHJvcChwOiB1bmtub3duKTogcCBpcyBWaXJ0dWFsUHJvcCB7XG4gIGlmICghaXNWaXJ0dWFsUHJvcChwKSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gcC52aXJ0dWFsVHlwZSAhPT0gXCJxdWVyeVwiOyAvLyB1bmRlZmluZWTrj4QgXCJjb2RlXCLroZwg7Leo6riJXG59XG5leHBvcnQgZnVuY3Rpb24gaXNWaXJ0dWFsUXVlcnlQcm9wKHA6IHVua25vd24pOiBwIGlzIFZpcnR1YWxQcm9wIHtcbiAgaWYgKCFpc1ZpcnR1YWxQcm9wKHApKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBwLnZpcnR1YWxUeXBlID09PSBcInF1ZXJ5XCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIFZlY3RvclByb3Age1xuICByZXR1cm4gKHAgYXMgVmVjdG9yUHJvcCk/LnR5cGUgPT09IFwidmVjdG9yXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgVmVjdG9yQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIFZlY3RvckFycmF5UHJvcCk/LnR5cGUgPT09IFwidmVjdG9yW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlY3RvclByb3AocDogdW5rbm93bik6IHAgaXMgVmVjdG9yUHJvcCB8IFZlY3RvckFycmF5UHJvcCB7XG4gIHJldHVybiBpc1ZlY3RvclNpbmdsZVByb3AocCkgfHwgaXNWZWN0b3JBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUc1ZlY3RvclByb3AocDogdW5rbm93bik6IHAgaXMgVHNWZWN0b3JQcm9wIHtcbiAgcmV0dXJuIChwIGFzIFRzVmVjdG9yUHJvcCk/LnR5cGUgPT09IFwidHN2ZWN0b3JcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbGF0aW9uUHJvcChwOiB1bmtub3duKTogcCBpcyBSZWxhdGlvblByb3Age1xuICByZXR1cm4gKHAgYXMgUmVsYXRpb25Qcm9wKT8udHlwZSA9PT0gXCJyZWxhdGlvblwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzT25lVG9PbmVSZWxhdGlvblByb3AocDogdW5rbm93bik6IHAgaXMgT25lVG9PbmVSZWxhdGlvblByb3Age1xuICByZXR1cm4gKHAgYXMgT25lVG9PbmVSZWxhdGlvblByb3ApPy5yZWxhdGlvblR5cGUgPT09IFwiT25lVG9PbmVcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcChwOiB1bmtub3duKTogcCBpcyBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3Age1xuICByZXR1cm4gKHAgYXMgQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wKT8ucmVsYXRpb25UeXBlID09PSBcIkJlbG9uZ3NUb09uZVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSGFzTWFueVJlbGF0aW9uUHJvcChwOiB1bmtub3duKTogcCBpcyBIYXNNYW55UmVsYXRpb25Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIEhhc01hbnlSZWxhdGlvblByb3ApPy5yZWxhdGlvblR5cGUgPT09IFwiSGFzTWFueVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcChwOiB1bmtub3duKTogcCBpcyBNYW55VG9NYW55UmVsYXRpb25Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIE1hbnlUb01hbnlSZWxhdGlvblByb3ApPy5yZWxhdGlvblR5cGUgPT09IFwiTWFueVRvTWFueVwiO1xufVxuXG50eXBlIEpvaW5DbGF1c2UgPVxuICB8IHtcbiAgICAgIGZyb206IHN0cmluZztcbiAgICAgIHRvOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIGN1c3RvbTogc3RyaW5nO1xuICAgIH07XG5leHBvcnQgZnVuY3Rpb24gaXNDdXN0b21Kb2luQ2xhdXNlKHA6IHVua25vd24pOiBwIGlzIHsgY3VzdG9tOiBzdHJpbmcgfSB7XG4gIHJldHVybiAhIShwIGFzIHsgY3VzdG9tOiBzdHJpbmcgfSk/LmN1c3RvbTtcbn1cblxudHlwZSBTdWJzZXRMb2FkZXIgPSB7XG4gIGFzOiBzdHJpbmc7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIG1hbnlKb2luOiB7XG4gICAgZnJvbVRhYmxlOiBzdHJpbmc7XG4gICAgZnJvbUNvbDogc3RyaW5nO1xuICAgIGlkRmllbGQ6IHN0cmluZztcbiAgICB0b1RhYmxlOiBzdHJpbmc7XG4gICAgdG9Db2w6IHN0cmluZztcbiAgICB0aHJvdWdoPzoge1xuICAgICAgdGFibGU6IHN0cmluZztcbiAgICAgIGZyb21Db2w6IHN0cmluZztcbiAgICAgIHRvQ29sOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgb25lSm9pbnM6ICh7XG4gICAgYXM6IHN0cmluZztcbiAgICBqb2luOiBcImlubmVyXCIgfCBcIm91dGVyXCI7XG4gICAgdGFibGU6IHN0cmluZztcbiAgfSAmIEpvaW5DbGF1c2UpW107XG4gIHNlbGVjdDogc3RyaW5nW107XG4gIGxvYWRlcnM/OiBTdWJzZXRMb2FkZXJbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFN1YnNldFF1ZXJ5ID0ge1xuICBzZWxlY3Q6IHN0cmluZ1tdO1xuICB2aXJ0dWFsOiBzdHJpbmdbXTtcbiAgam9pbnM6ICh7XG4gICAgYXM6IHN0cmluZztcbiAgICBqb2luOiBcImlubmVyXCIgfCBcIm91dGVyXCI7XG4gICAgdGFibGU6IHN0cmluZztcbiAgfSAmIEpvaW5DbGF1c2UpW107XG4gIGxvYWRlcnM6IFN1YnNldExvYWRlcltdO1xufTtcblxuLyogQmFzZU1vZGVsICovXG5leHBvcnQgY29uc3QgU29uYW11UXVlcnlNb2RlID0gei5lbnVtKFtcImJvdGhcIiwgXCJsaXN0XCIsIFwiY291bnRcIl0pO1xuZXhwb3J0IHR5cGUgU29uYW11UXVlcnlNb2RlID0gei5pbmZlcjx0eXBlb2YgU29uYW11UXVlcnlNb2RlPjtcblxuLyogU2VtYW50aWMgUXVlcnkgKi9cbmV4cG9ydCBjb25zdCBTb25hbXVTZW1hbnRpY1BhcmFtcyA9IHoub2JqZWN0KHtcbiAgc2VtYW50aWNRdWVyeTogei5vYmplY3Qoe1xuICAgIGVtYmVkZGluZzogei5hcnJheSh6Lm51bWJlcigpKS5taW4oMTAyNCkubWF4KDEwMjQpLFxuICAgIHRocmVzaG9sZDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIG1ldGhvZDogei5lbnVtKFtcImNvc2luZVwiLCBcImwyXCIsIFwiaW5uZXJfcHJvZHVjdFwiXSkub3B0aW9uYWwoKSxcbiAgfSksXG59KTtcbmV4cG9ydCB0eXBlIFNvbmFtdVNlbWFudGljUGFyYW1zID0gei5pbmZlcjx0eXBlb2YgU29uYW11U2VtYW50aWNQYXJhbXM+O1xuXG4vKiBLbmV4IE1pZ3JhdGlvbiAqL1xuZXhwb3J0IHR5cGUgS25leEVycm9yID0ge1xuICBjb2RlOiBzdHJpbmc7XG4gIGVycm5vOiBudW1iZXI7XG4gIHNxbDogc3RyaW5nO1xuICBzcWxNZXNzYWdlOiBzdHJpbmc7XG4gIHNxbFN0YXRlOiBzdHJpbmc7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGlzS25leEVycm9yKGU6IHVua25vd24pOiBlIGlzIEtuZXhFcnJvciB7XG4gIHJldHVybiAhIShlIGFzIEtuZXhFcnJvcik/LmNvZGUgJiYgISEoZSBhcyBLbmV4RXJyb3IpPy5zcWxNZXNzYWdlICYmICEhKGUgYXMgS25leEVycm9yKT8uc3FsU3RhdGU7XG59XG5cbmV4cG9ydCB0eXBlIEtuZXhDb2x1bW5UeXBlID1cbiAgfCBcInN0cmluZ1wiXG4gIHwgXCJ0ZXh0XCJcbiAgfCBcInNtYWxsdGV4dFwiXG4gIHwgXCJtZWRpdW10ZXh0XCJcbiAgfCBcImxvbmd0ZXh0XCJcbiAgfCBcImludGVnZXJcIlxuICB8IFwiYmlnSW50ZWdlclwiXG4gIHwgXCJkZWNpbWFsXCJcbiAgfCBcInRpbWVzdGFtcFwiXG4gIHwgXCJib29sZWFuXCJcbiAgfCBcImZvcmVpZ25cIlxuICB8IFwidXVpZFwiXG4gIHwgXCJqc29uXCJcbiAgfCBcImZsb2F0XCJcbiAgfCBcImRhdGVcIlxuICB8IFwidGltZVwiXG4gIHwgXCJkYXRldGltZVwiO1xuZXhwb3J0IHR5cGUgTWlncmF0aW9uQ29sdW1uVHlwZSA9XG4gIHwgXCJzdHJpbmdcIlxuICB8IFwic3RyaW5nW11cIlxuICB8IFwiaW50ZWdlclwiXG4gIHwgXCJpbnRlZ2VyW11cIlxuICB8IFwiYmlnSW50ZWdlclwiXG4gIHwgXCJiaWdJbnRlZ2VyW11cIlxuICB8IFwibnVtYmVyT3JOdW1lcmljXCJcbiAgfCBcIm51bWJlck9yTnVtZXJpY1tdXCJcbiAgfCBcImJvb2xlYW5cIlxuICB8IFwiYm9vbGVhbltdXCJcbiAgfCBcImRhdGVcIlxuICB8IFwiZGF0ZVtdXCJcbiAgfCBcInV1aWRcIlxuICB8IFwidXVpZFtdXCJcbiAgfCBcImpzb25cIlxuICB8IFwidmVjdG9yXCJcbiAgfCBcInZlY3RvcltdXCJcbiAgfCBcInRzdmVjdG9yXCI7XG5leHBvcnQgdHlwZSBNaWdyYXRpb25Db2x1bW4gPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogTWlncmF0aW9uQ29sdW1uVHlwZTtcbiAgbnVsbGFibGU6IGJvb2xlYW47XG4gIG51bWJlclR5cGU/OiBcInJlYWxcIiB8IFwiZG91YmxlIHByZWNpc2lvblwiIHwgXCJudW1lcmljXCI7XG4gIGxlbmd0aD86IG51bWJlcjtcbiAgZGVmYXVsdFRvPzogc3RyaW5nO1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIHNjYWxlPzogbnVtYmVyO1xuICBkaW1lbnNpb25zPzogbnVtYmVyO1xuICBnZW5lcmF0ZWQ/OiBHZW5lcmF0ZWRDb2x1bW47XG59O1xuZXhwb3J0IHR5cGUgTWlncmF0aW9uSW5kZXggPSB7XG4gIHR5cGU6IFwidW5pcXVlXCIgfCBcImluZGV4XCIgfCBcImhuc3dcIiB8IFwiaXZmZmxhdFwiO1xuICBjb2x1bW5zOiBFbnRpdHlJbmRleENvbHVtbltdO1xuICBuYW1lOiBzdHJpbmc7XG4gIHVzaW5nPzogXCJidHJlZVwiIHwgXCJoYXNoXCIgfCBcImdpblwiIHwgXCJnaXN0XCIgfCBcInBncm9vbmdhXCI7XG4gIG51bGxzTm90RGlzdGluY3Q/OiBib29sZWFuO1xuICAvKiogSE5TVyAoSGllcmFyY2hpY2FsIE5hdmlnYWJsZSBTbWFsbCBXb3JsZCk6IOqwgSDrhbjrk5zsnZgg7LWc64yAIOyXsOqysCDsiJggKi9cbiAgbT86IG51bWJlcjtcbiAgLyoqIEhOU1cgKEhpZXJhcmNoaWNhbCBOYXZpZ2FibGUgU21hbGwgV29ybGQpOiDqtazshLEg7IucIO2DkOyDiSDrspTsnIQgKi9cbiAgZWZDb25zdHJ1Y3Rpb24/OiBudW1iZXI7XG4gIC8qKiBJVkZGbGF0IChJbnZlcnRlZCBGaWxlIHdpdGggRmxhdCBDb21wcmVzc2lvbik6IO2BtOufrOyKpO2EsOungSDrpqzsiqTtirgg7IiYICovXG4gIGxpc3RzPzogbnVtYmVyO1xufTtcbmV4cG9ydCB0eXBlIE1pZ3JhdGlvbkZvcmVpZ24gPSB7XG4gIGNvbHVtbnM6IHN0cmluZ1tdO1xuICB0bzogc3RyaW5nO1xuICBvblVwZGF0ZTogUmVsYXRpb25PbjtcbiAgb25EZWxldGU6IFJlbGF0aW9uT247XG59O1xuZXhwb3J0IHR5cGUgTWlncmF0aW9uSm9pblRhYmxlID0ge1xuICB0YWJsZTogc3RyaW5nO1xuICBpbmRleGVzOiBNaWdyYXRpb25JbmRleFtdO1xuICBjb2x1bW5zOiBNaWdyYXRpb25Db2x1bW5bXTtcbiAgZm9yZWlnbnM6IE1pZ3JhdGlvbkZvcmVpZ25bXTtcbn07XG5leHBvcnQgdHlwZSBNaWdyYXRpb25TZXQgPSB7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIGNvbHVtbnM6IE1pZ3JhdGlvbkNvbHVtbltdO1xuICBpbmRleGVzOiBNaWdyYXRpb25JbmRleFtdO1xuICBmb3JlaWduczogTWlncmF0aW9uRm9yZWlnbltdO1xufTtcbmV4cG9ydCB0eXBlIE1pZ3JhdGlvblNldEFuZEpvaW5UYWJsZSA9IE1pZ3JhdGlvblNldCAmIHtcbiAgam9pblRhYmxlczogTWlncmF0aW9uSm9pblRhYmxlW107XG59O1xuZXhwb3J0IHR5cGUgR2VuTWlncmF0aW9uQ29kZSA9IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgdHlwZTogXCJub3JtYWxcIiB8IFwiZm9yZWlnblwiO1xuICBmb3JtYXR0ZWQ6IHN0cmluZyB8IG51bGw7XG59O1xuXG4vKiBBcGkgKi9cbmV4cG9ydCB0eXBlIEFwaVBhcmFtID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IEFwaVBhcmFtVHlwZTtcbiAgb3B0aW9uYWw6IGJvb2xlYW47XG4gIGRlZmF1bHREZWY/OiBzdHJpbmc7XG59O1xuZXhwb3J0IG5hbWVzcGFjZSBBcGlQYXJhbVR5cGUge1xuICBleHBvcnQgdHlwZSBGdW5jdGlvbiA9IHtcbiAgICB0OiBcImZ1bmN0aW9uXCI7XG4gICAgcGFyYW1ldGVyczogQXBpUGFyYW1bXTtcbiAgICByZXR1cm5UeXBlOiBBcGlQYXJhbVR5cGU7XG4gIH07XG4gIGV4cG9ydCB0eXBlIE9iamVjdCA9IHtcbiAgICB0OiBcIm9iamVjdFwiO1xuICAgIHByb3BzOiBBcGlQYXJhbVtdO1xuICB9O1xuICBleHBvcnQgdHlwZSBVbmlvbiA9IHtcbiAgICB0OiBcInVuaW9uXCI7XG4gICAgdHlwZXM6IEFwaVBhcmFtVHlwZVtdO1xuICB9O1xuICBleHBvcnQgdHlwZSBJbnRlcnNlY3Rpb24gPSB7XG4gICAgdDogXCJpbnRlcnNlY3Rpb25cIjtcbiAgICB0eXBlczogQXBpUGFyYW1UeXBlW107XG4gIH07XG4gIGV4cG9ydCB0eXBlIFN0cmluZ0xpdGVyYWwgPSB7XG4gICAgdDogXCJzdHJpbmctbGl0ZXJhbFwiO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGV4cG9ydCB0eXBlIE51bWVyaWNMaXRlcmFsID0ge1xuICAgIHQ6IFwibnVtZXJpYy1saXRlcmFsXCI7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgQXJyYXkgPSB7XG4gICAgdDogXCJhcnJheVwiO1xuICAgIGVsZW1lbnRzVHlwZTogQXBpUGFyYW1UeXBlO1xuICB9O1xuICBleHBvcnQgdHlwZSBSZWYgPSB7XG4gICAgdDogXCJyZWZcIjtcbiAgICBpZDogc3RyaW5nO1xuICAgIGFyZ3M/OiBBcGlQYXJhbVR5cGVbXTtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgSW5kZXhlZEFjY2VzcyA9IHtcbiAgICB0OiBcImluZGV4ZWQtYWNjZXNzXCI7XG4gICAgb2JqZWN0OiBBcGlQYXJhbVR5cGU7XG4gICAgaW5kZXg6IEFwaVBhcmFtVHlwZTtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgVHVwbGVUeXBlID0ge1xuICAgIHQ6IFwidHVwbGUtdHlwZVwiO1xuICAgIGVsZW1lbnRzOiBBcGlQYXJhbVR5cGVbXTtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgUGljayA9IFJlZiAmIHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBcIlBpY2tcIjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgT21pdCA9IFJlZiAmIHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBcIk9taXRcIjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgUGFydGlhbCA9IFJlZiAmIHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBcIlBhcnRpYWxcIjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgUHJvbWlzZSA9IFJlZiAmIHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBcIlByb21pc2VcIjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgQ29udGV4dCA9IFJlZiAmIHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBcIkNvbnRleHRcIjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgVHlwZVBhcmFtID0ge1xuICAgIHQ6IFwidHlwZS1wYXJhbVwiO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29uc3RyYWludD86IEFwaVBhcmFtVHlwZTtcbiAgfTtcblxuICBleHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLk9iamVjdCB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5PYmplY3QpPy50ID09PSBcIm9iamVjdFwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1VuaW9uKHY6IHVua25vd24pOiB2IGlzIEFwaVBhcmFtVHlwZS5VbmlvbiB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5Vbmlvbik/LnQgPT09IFwidW5pb25cIjtcbiAgfVxuICBleHBvcnQgZnVuY3Rpb24gaXNJbnRlcnNlY3Rpb24odjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLkludGVyc2VjdGlvbiB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5JbnRlcnNlY3Rpb24pPy50ID09PSBcImludGVyc2VjdGlvblwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ0xpdGVyYWwodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlN0cmluZ0xpdGVyYWwge1xuICAgIHJldHVybiAodiBhcyBBcGlQYXJhbVR5cGUuU3RyaW5nTGl0ZXJhbCk/LnQgPT09IFwic3RyaW5nLWxpdGVyYWxcIjtcbiAgfVxuICBleHBvcnQgZnVuY3Rpb24gaXNOdW1lcmljTGl0ZXJhbCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuTnVtZXJpY0xpdGVyYWwge1xuICAgIHJldHVybiAodiBhcyBBcGlQYXJhbVR5cGUuTnVtZXJpY0xpdGVyYWwpPy50ID09PSBcIm51bWVyaWMtbGl0ZXJhbFwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc0FycmF5KHY6IHVua25vd24pOiB2IGlzIEFwaVBhcmFtVHlwZS5BcnJheSB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5BcnJheSk/LnQgPT09IFwiYXJyYXlcIjtcbiAgfVxuICBleHBvcnQgZnVuY3Rpb24gaXNSZWYodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlJlZiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT09IG51bGwgJiYgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc0luZGV4ZWRBY2Nlc3ModjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLkluZGV4ZWRBY2Nlc3Mge1xuICAgIHJldHVybiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9PSBudWxsICYmICh2IGFzIHsgdD86IHVua25vd24gfSkudCA9PT0gXCJpbmRleGVkLWFjY2Vzc1wiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1R1cGxlVHlwZSh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuVHVwbGVUeXBlIHtcbiAgICByZXR1cm4gdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAhPT0gbnVsbCAmJiAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwidHVwbGUtdHlwZVwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1BpY2sodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlBpY2sge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiICYmXG4gICAgICAodiBhcyB7IGlkPzogdW5rbm93biB9KS5pZCA9PT0gXCJQaWNrXCJcbiAgICApO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc09taXQodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLk9taXQge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiICYmXG4gICAgICAodiBhcyB7IGlkPzogdW5rbm93biB9KS5pZCA9PT0gXCJPbWl0XCJcbiAgICApO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1BhcnRpYWwodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlBhcnRpYWwge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiICYmXG4gICAgICAodiBhcyB7IGlkPzogdW5rbm93biB9KS5pZCA9PT0gXCJQYXJ0aWFsXCJcbiAgICApO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlByb21pc2Uge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiICYmXG4gICAgICAodiBhcyB7IGlkPzogdW5rbm93biB9KS5pZCA9PT0gXCJQcm9taXNlXCJcbiAgICApO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc0NvbnRleHQodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLkNvbnRleHQge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiICYmXG4gICAgICAodiBhcyB7IGlkPzogdW5rbm93biB9KS5pZCA9PT0gXCJDb250ZXh0XCJcbiAgICApO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1JlZktuZXgodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlJlZiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIktuZXhcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZVBhcmFtKHY6IHVua25vd24pOiB2IGlzIEFwaVBhcmFtVHlwZS5UeXBlUGFyYW0ge1xuICAgIHJldHVybiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9PSBudWxsICYmICh2IGFzIHsgdD86IHVua25vd24gfSkudCA9PT0gXCJ0eXBlLXBhcmFtXCI7XG4gIH1cbn1cbmV4cG9ydCB0eXBlIEFwaVBhcmFtVHlwZSA9XG4gIHwgXCJzdHJpbmdcIlxuICB8IFwibnVtYmVyXCJcbiAgfCBcImJvb2xlYW5cIlxuICB8IFwibnVsbFwiXG4gIHwgXCJ1bmRlZmluZWRcIlxuICB8IFwidm9pZFwiXG4gIHwgXCJhbnlcIlxuICB8IFwidW5rbm93blwiXG4gIHwgXCJ0cnVlXCJcbiAgfCBcImZhbHNlXCJcbiAgfCBBcGlQYXJhbVR5cGUuU3RyaW5nTGl0ZXJhbFxuICB8IEFwaVBhcmFtVHlwZS5OdW1lcmljTGl0ZXJhbFxuICB8IEFwaVBhcmFtVHlwZS5PYmplY3RcbiAgfCBBcGlQYXJhbVR5cGUuVW5pb25cbiAgfCBBcGlQYXJhbVR5cGUuSW50ZXJzZWN0aW9uXG4gIHwgQXBpUGFyYW1UeXBlLkFycmF5XG4gIHwgQXBpUGFyYW1UeXBlLlJlZlxuICB8IEFwaVBhcmFtVHlwZS5JbmRleGVkQWNjZXNzXG4gIHwgQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVxuICB8IEFwaVBhcmFtVHlwZS5UdXBsZVR5cGVcbiAgfCBBcGlQYXJhbVR5cGUuRnVuY3Rpb247XG5cbi8qIFRlbXBsYXRlICovXG4vKipcbiAqIFVJIOy7tO2PrOuEjO2KuCDroIzrjZTrp4HsnYQg7JyE7ZWcIOuplO2DgOuNsOydtO2EsCDrhbjrk5zsnoXri4jri6QuXG4gKlxuICogKirrqqnsoIEqKjogWm9kIOyKpO2CpOuniOuhnOu2gO2EsCDtlITroaDtirjsl5Trk5wgVUkg7Lu07Y+s64SM7Yq466W8IOyekOuPmSDsg53shLHtlZjquLAg7JyE7ZWcXG4gKiDroIzrjZTrp4Eg7KCV67O066W8IOuLtOydgCDtirjrpqwg6rWs7KGw7J6F64uI64ukLiDqsIEg7ZWE65Oc6rCAIOyWtOuWpCBVSSDsu7Ttj6zrhIztirjroZxcbiAqIO2RnO2YhOuQmOyWtOyVvCDtlZjripTsp4Ao7YWN7Iqk7Yq4LCDsnbTrr7jsp4AsIOuCoOynnCwgRW51bSDshKDtg50g65OxKeulvCDrqoXsi5ztlanri4jri6QuXG4gKlxuICogKirrs4DtmZgg7Z2Q66aEKio6XG4gKiBFbnRpdHkgc3Vic2V0IOKGkiBFbnRpdHlQcm9wTm9kZSDihpIgWm9kIOyKpO2CpOuniCDihpIgUmVuZGVyaW5nTm9kZSAoVUnsmqkpIOKGkiBSZWFjdCDsu7Ttj6zrhIztirgg7L2U65OcIOyDneyEsVxuICpcbiAqICoq7KO87JqUIO2VhOuTnCoqOlxuICogLSBgcmVuZGVyVHlwZWA6IFVJIOy7tO2PrOuEjO2KuCDsnKDtmJUgKHN0cmluZy1wbGFpbiwgbnVtYmVyLWZrX2lkLCBlbnVtcywgYXJyYXkg65OxKVxuICogLSBgem9kVHlwZWA6IOybkOuzuCBab2Qg7Iqk7YKk66eIICh2YWxpZGF0aW9uIOyaqSlcbiAqIC0gYGNoaWxkcmVuYDog7KSR7LKp65CcIOqwneyytCDtlYTrk5zrk6QgKG9iamVjdOydvCDrlYwpXG4gKiAtIGBlbGVtZW50YDog67Cw7Je0IOyalOyGjCDtg4DsnoUgKGFycmF57J28IOuVjClcbiAqXG4gKiAqKuyCrOyaqSDsnITsuZgqKjpcbiAqIC0gem9kLWNvbnZlcnRlci50c+ydmCB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlKCnsl5DshJwg7IOd7ISxXG4gKiAtIHZpZXdfZm9ybS50ZW1wbGF0ZS50cywgdmlld19saXN0LnRlbXBsYXRlLnRzIOuTseyXkOyEnCBSZWFjdCDsu7Ttj6zrhIztirgg7L2U65OcIOyDneyEseyXkCDsgqzsmqlcbiAqL1xuLy8g7IWA7ZSEIOywuOyhsCDtg4DsnoXsnbTrr4DroZwgWm9kIOyDneuete2VmOqzoCDsp4HsoJEg7KCV7J2YXG5leHBvcnQgY29uc3QgUmVuZGVyaW5nTm9kZSA9IHouYW55KCk7XG5leHBvcnQgdHlwZSBSZW5kZXJpbmdOb2RlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHJlbmRlclR5cGU6XG4gICAgfCBcInN0cmluZy1wbGFpblwiXG4gICAgfCBcInN0cmluZy1pbWFnZVwiXG4gICAgfCBcInN0cmluZy1kYXRldGltZVwiXG4gICAgfCBcInN0cmluZy1kYXRlXCJcbiAgICB8IFwic3RyaW5nLWlkXCJcbiAgICB8IFwic3RyaW5nLWZrX2lkXCJcbiAgICB8IFwiZGF0ZXRpbWVcIlxuICAgIHwgXCJudW1iZXItcGxhaW5cIlxuICAgIHwgXCJudW1iZXItaWRcIlxuICAgIHwgXCJudW1iZXItZmtfaWRcIlxuICAgIHwgXCJib29sZWFuXCJcbiAgICB8IFwiZW51bXNcIlxuICAgIHwgXCJhcnJheVwiXG4gICAgfCBcImFycmF5LWltYWdlc1wiXG4gICAgfCBcImpzb24tc29uYW11ZmlsZVwiXG4gICAgfCBcImpzb24tc29uYW11ZmlsZS1hcnJheVwiXG4gICAgfCBcIm9iamVjdFwiXG4gICAgfCBcIm9iamVjdC1waWNrXCJcbiAgICB8IFwicmVjb3JkXCJcbiAgICB8IFwidmVjdG9yXCI7XG4gIHpvZFR5cGU6IHouWm9kVHlwZUFueTtcbiAgZWxlbWVudD86IFJlbmRlcmluZ05vZGU7XG4gIGNoaWxkcmVuPzogUmVuZGVyaW5nTm9kZVtdO1xuICBjb25maWc/OiB7XG4gICAgcGlja2VkOiBzdHJpbmc7XG4gIH07XG4gIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgbnVsbGFibGU/OiBib29sZWFuO1xufTtcblxuY29uc3QgR2VuZXJhdGVkQ29sdW1uU2NoZW1hID0gei5vYmplY3Qoe1xuICB0eXBlOiB6LmVudW0oW1wiU1RPUkVEXCIsIFwiVklSVFVBTFwiXSksXG4gIGV4cHJlc3Npb246IHouc3RyaW5nKCksXG59KTtcblxuY29uc3QgRml4dHVyZUNvbXBhbmlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZW50aXR5OiB6LnN0cmluZygpLFxuICBvdmVycmlkZXM6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICBjb3VudDogei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCksXG59KTtcblxuLyoqXG4gKiBDb25lIOyKpO2CpOuniCDqsoDspp1cbiAqXG4gKiBjb25lIOuplO2DgOuNsOydtO2EsOydmCDsnKDtmqjshLHsnYQg6rKA7Kad7ZWp64uI64ukLlxuICovXG5jb25zdCBDb25lU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBub3RlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdGFnczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICAgIGZpeHR1cmVHZW5lcmF0b3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBmaXh0dXJlRGVmYXVsdDogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgICBmaXh0dXJlU3RyYXRlZ3k6IHoubGl0ZXJhbChcInNlcXVlbmNlXCIpLm9wdGlvbmFsKCksXG4gICAgZml4dHVyZUNvbXBhbmlvbnM6IHouYXJyYXkoRml4dHVyZUNvbXBhbmlvblNjaGVtYSkub3B0aW9uYWwoKSxcbiAgICBmaXh0dXJlUGFyZW50T3ZlcnJpZGVzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbiAgICBkYXRhU291cmNlOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgc3RyYXRlZ3k6IHouZW51bShbXCJzYW1wbGVcIiwgXCJpZHNcIiwgXCJxdWVyeVwiLCBcImZpbGVcIiwgXCJyZWNlbnRcIiwgXCJyYW5kb21cIl0pLFxuICAgICAgICBjb25maWc6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gICAgICB9KVxuICAgICAgLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5jYXRjaGFsbCh6LnVua25vd24oKSk7IC8vIOyCrOyaqeyekCDsoJXsnZgg66mU7YOA642w7J207YSwIO2XiOyaqVxuXG5jb25zdCBCYXNlUHJvcEZpZWxkcyA9IHtcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgZGVzYzogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBudWxsYWJsZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdG9GaWx0ZXI6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLm9wdGlvbmFsKCksXG4gIGRiRGVmYXVsdDogei51bmlvbihbei5zdHJpbmcoKSwgei5udW1iZXIoKSwgei5ib29sZWFuKCldKS5vcHRpb25hbCgpLFxuICBnZW5lcmF0ZWQ6IEdlbmVyYXRlZENvbHVtblNjaGVtYS5vcHRpb25hbCgpLFxuICBjb25lOiBDb25lU2NoZW1hLm9wdGlvbmFsKCksXG59O1xuXG4vLyDrtoDqsIAg7ZWE65Oc6rCAIO2VhOyalOyXhuuKlCBwcm9wXG5jb25zdCBCYXNlUHJvcEZpZWxkc1dpdGhvdXRBZGRpdGlvbmFsID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LnVuaW9uKFtcbiAgICAgIHoubGl0ZXJhbChcImludGVnZXJcIiksXG4gICAgICB6LmxpdGVyYWwoXCJpbnRlZ2VyW11cIiksXG4gICAgICB6LmxpdGVyYWwoXCJiaWdJbnRlZ2VyXCIpLFxuICAgICAgei5saXRlcmFsKFwiYmlnSW50ZWdlcltdXCIpLFxuICAgICAgei5saXRlcmFsKFwiYm9vbGVhblwiKSxcbiAgICAgIHoubGl0ZXJhbChcImJvb2xlYW5bXVwiKSxcbiAgICAgIHoubGl0ZXJhbChcInV1aWRcIiksXG4gICAgICB6LmxpdGVyYWwoXCJ1dWlkW11cIiksXG4gICAgICB6LmxpdGVyYWwoXCJ0c3ZlY3RvclwiKSxcbiAgICBdKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG4vLyBwcmVjaXNpb24vc2NhbGUg7ZWE65OcXG5jb25zdCBQcmVjaXNpb25TY2FsZUZpZWxkcyA9IHtcbiAgcHJlY2lzaW9uOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHNjYWxlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG59O1xuXG4vLyDqsIEg7YOA7J6F67OEIOyKpO2CpOuniCDsoJXsnZhcblxuY29uc3QgU3RyaW5nUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwic3RyaW5nXCIpLFxuICAgIGxlbmd0aDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIHpvZEZvcm1hdDogWm9kU3RyaW5nRm9ybWF0Lm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcbmNvbnN0IFN0cmluZ0FycmF5UHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwic3RyaW5nW11cIiksXG4gICAgbGVuZ3RoOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgem9kRm9ybWF0OiBab2RTdHJpbmdGb3JtYXQub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBFbnVtUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwiZW51bVwiKSxcbiAgICBpZDogei5zdHJpbmcoKSxcbiAgICBsZW5ndGg6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuY29uc3QgRW51bUFycmF5UHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwiZW51bVtdXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IE51bWJlclByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcIm51bWJlclwiKSxcbiAgICAuLi5QcmVjaXNpb25TY2FsZUZpZWxkcyxcbiAgICBudW1iZXJUeXBlOiB6LmVudW0oW1wicmVhbFwiLCBcImRvdWJsZSBwcmVjaXNpb25cIiwgXCJudW1lcmljXCJdKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5jb25zdCBOdW1iZXJBcnJheVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcIm51bWJlcltdXCIpLFxuICAgIC4uLlByZWNpc2lvblNjYWxlRmllbGRzLFxuICAgIG51bWJlclR5cGU6IHouZW51bShbXCJyZWFsXCIsIFwiZG91YmxlIHByZWNpc2lvblwiLCBcIm51bWVyaWNcIl0pLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgRGF0ZVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcImRhdGVcIiksXG4gICAgcHJlY2lzaW9uOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcbmNvbnN0IERhdGVBcnJheVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcImRhdGVbXVwiKSxcbiAgICBwcmVjaXNpb246IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBOdW1lcmljUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwibnVtZXJpY1wiKSxcbiAgICAuLi5QcmVjaXNpb25TY2FsZUZpZWxkcyxcbiAgfSlcbiAgLnN0cmljdCgpO1xuY29uc3QgTnVtZXJpY0FycmF5UHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwibnVtZXJpY1tdXCIpLFxuICAgIC4uLlByZWNpc2lvblNjYWxlRmllbGRzLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IEpzb25Qcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJqc29uXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IFNlYXJjaFRleHRTb3VyY2VDb2x1bW5TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgY2FzZUluc2Vuc2l0aXZlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IFNlYXJjaFRleHRQcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJzZWFyY2hUZXh0XCIpLFxuICAgIHNvdXJjZUNvbHVtbnM6IHouYXJyYXkoU2VhcmNoVGV4dFNvdXJjZUNvbHVtblNjaGVtYSkubWluKDEpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IFZpcnR1YWxQcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJ2aXJ0dWFsXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICAgIHZpcnR1YWxUeXBlOiB6LmVudW0oW1wicXVlcnlcIiwgXCJjb2RlXCJdKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IFZlY3RvclByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcInZlY3RvclwiKSxcbiAgICBkaW1lbnNpb25zOiB6Lm51bWJlcigpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5jb25zdCBWZWN0b3JBcnJheVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcInZlY3RvcltdXCIpLFxuICAgIGRpbWVuc2lvbnM6IHoubnVtYmVyKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuLy8gUmVsYXRpb24g7YOA7J6F7J2AIHJlbGF0aW9uVHlwZeyXkCDrlLDrnbwg7IS467aE7ZmUXG5jb25zdCBCYXNlUmVsYXRpb25GaWVsZHMgPSB7XG4gIC4uLkJhc2VQcm9wRmllbGRzLFxuICB0eXBlOiB6LmxpdGVyYWwoXCJyZWxhdGlvblwiKSxcbiAgd2l0aDogei5zdHJpbmcoKSxcbn07XG5cbi8vIFJlbGF0aW9uT24g7YOA7J6FXG5jb25zdCBSZWxhdGlvbk9uU2NoZW1hID0gei5lbnVtKFtcIkNBU0NBREVcIiwgXCJTRVQgTlVMTFwiLCBcIk5PIEFDVElPTlwiLCBcIlNFVCBERUZBVUxUXCIsIFwiUkVTVFJJQ1RcIl0pO1xuXG5jb25zdCBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VSZWxhdGlvbkZpZWxkcyxcbiAgICByZWxhdGlvblR5cGU6IHoubGl0ZXJhbChcIkJlbG9uZ3NUb09uZVwiKSxcbiAgICBjdXN0b21Kb2luQ2xhdXNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdXNlQ29uc3RyYWludDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBvblVwZGF0ZTogUmVsYXRpb25PblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIG9uRGVsZXRlOiBSZWxhdGlvbk9uU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgSGFzTWFueVJlbGF0aW9uUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVJlbGF0aW9uRmllbGRzLFxuICAgIHJlbGF0aW9uVHlwZTogei5saXRlcmFsKFwiSGFzTWFueVwiKSxcbiAgICBqb2luQ29sdW1uOiB6LnN0cmluZygpLFxuICAgIGZyb21Db2x1bW46IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBNYW55VG9NYW55UmVsYXRpb25Qcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUmVsYXRpb25GaWVsZHMsXG4gICAgcmVsYXRpb25UeXBlOiB6LmxpdGVyYWwoXCJNYW55VG9NYW55XCIpLFxuICAgIGpvaW5UYWJsZTogei5zdHJpbmcoKSxcbiAgICBvblVwZGF0ZTogUmVsYXRpb25PblNjaGVtYSxcbiAgICBvbkRlbGV0ZTogUmVsYXRpb25PblNjaGVtYSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBPbmVUb09uZVJlbGF0aW9uUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVJlbGF0aW9uRmllbGRzLFxuICAgIHJlbGF0aW9uVHlwZTogei5saXRlcmFsKFwiT25lVG9PbmVcIiksXG4gICAgY3VzdG9tSm9pbkNsYXVzZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGhhc0pvaW5Db2x1bW46IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgdXNlQ29uc3RyYWludDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBvblVwZGF0ZTogUmVsYXRpb25PblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIG9uRGVsZXRlOiBSZWxhdGlvbk9uU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgUmVsYXRpb25UeXBlcyA9IFtcIkJlbG9uZ3NUb09uZVwiLCBcIkhhc01hbnlcIiwgXCJNYW55VG9NYW55XCIsIFwiT25lVG9PbmVcIl0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgUmVsYXRpb25Qcm9wU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXG4gIFwicmVsYXRpb25UeXBlXCIsXG4gIFtcbiAgICBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BTY2hlbWEsXG4gICAgSGFzTWFueVJlbGF0aW9uUHJvcFNjaGVtYSxcbiAgICBNYW55VG9NYW55UmVsYXRpb25Qcm9wU2NoZW1hLFxuICAgIE9uZVRvT25lUmVsYXRpb25Qcm9wU2NoZW1hLFxuICBdLFxuICB7XG4gICAgZXJyb3I6IChpc3MpID0+XG4gICAgICBgcmVsYXRpb25UeXBl7J2AICR7UmVsYXRpb25UeXBlcy5tYXAoKHQpID0+IGAnJHt0fSdgKS5qb2luKFwiLCBcIil9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukLiDsnoXroKXqsJI6IFwiJHsoaXNzLmlucHV0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ucmVsYXRpb25UeXBlfVwiYCxcbiAgfSxcbik7XG5cbmNvbnN0IE5vcm1hbFByb3BUeXBlcyA9IFtcbiAgXCJpbnRlZ2VyXCIsXG4gIFwiaW50ZWdlcltdXCIsXG4gIFwiYmlnSW50ZWdlclwiLFxuICBcImJpZ0ludGVnZXJbXVwiLFxuICBcInN0cmluZ1wiLFxuICBcInN0cmluZ1tdXCIsXG4gIFwiZW51bVwiLFxuICBcImVudW1bXVwiLFxuICBcIm51bWJlclwiLFxuICBcIm51bWJlcltdXCIsXG4gIFwibnVtZXJpY1wiLFxuICBcIm51bWVyaWNbXVwiLFxuICBcImJvb2xlYW5cIixcbiAgXCJib29sZWFuW11cIixcbiAgXCJkYXRlXCIsXG4gIFwiZGF0ZVtdXCIsXG4gIFwidXVpZFwiLFxuICBcInV1aWRbXVwiLFxuICBcImpzb25cIixcbiAgXCJzZWFyY2hUZXh0XCIsXG4gIFwidmlydHVhbFwiLFxuICBcInZlY3RvclwiLFxuICBcInZlY3RvcltdXCIsXG4gIFwidHN2ZWN0b3JcIixcbl0gYXMgY29uc3Q7XG5cbi8vIFZJUlRVQUwgR2VuZXJhdGVkIENvbHVtbuyXkOyEnCDsgqzsmqkg67aI6rCA64ql7ZWcIO2DgOyeheuTpFxuY29uc3QgVmlydHVhbEdlbmVyYXRlZERpc2FsbG93ZWRUeXBlcyA9IFtcbiAgXCJqc29uXCIsXG4gIFwidmVjdG9yXCIsXG4gIFwidmVjdG9yW11cIixcbiAgXCJzdHJpbmdbXVwiLFxuICBcImludGVnZXJbXVwiLFxuICBcImJpZ0ludGVnZXJbXVwiLFxuICBcImJvb2xlYW5bXVwiLFxuICBcImRhdGVbXVwiLFxuICBcInV1aWRbXVwiLFxuICBcIm51bWJlcltdXCIsXG4gIFwibnVtZXJpY1tdXCIsXG4gIFwiZW51bVtdXCIsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTm9ybWFsUHJvcFNjaGVtYSA9IHpcbiAgLmRpc2NyaW1pbmF0ZWRVbmlvbihcbiAgICBcInR5cGVcIixcbiAgICBbXG4gICAgICBCYXNlUHJvcEZpZWxkc1dpdGhvdXRBZGRpdGlvbmFsLFxuICAgICAgU3RyaW5nUHJvcFNjaGVtYSxcbiAgICAgIFN0cmluZ0FycmF5UHJvcFNjaGVtYSxcbiAgICAgIEVudW1Qcm9wU2NoZW1hLFxuICAgICAgRW51bUFycmF5UHJvcFNjaGVtYSxcbiAgICAgIE51bWJlclByb3BTY2hlbWEsXG4gICAgICBOdW1iZXJBcnJheVByb3BTY2hlbWEsXG4gICAgICBEYXRlUHJvcFNjaGVtYSxcbiAgICAgIERhdGVBcnJheVByb3BTY2hlbWEsXG4gICAgICBOdW1lcmljUHJvcFNjaGVtYSxcbiAgICAgIE51bWVyaWNBcnJheVByb3BTY2hlbWEsXG4gICAgICBKc29uUHJvcFNjaGVtYSxcbiAgICAgIFNlYXJjaFRleHRQcm9wU2NoZW1hLFxuICAgICAgVmlydHVhbFByb3BTY2hlbWEsXG4gICAgICBWZWN0b3JQcm9wU2NoZW1hLFxuICAgICAgVmVjdG9yQXJyYXlQcm9wU2NoZW1hLFxuICAgIF0sXG4gICAge1xuICAgICAgZXJyb3I6IChpc3MpID0+XG4gICAgICAgIGB0eXBl7J2AICR7Tm9ybWFsUHJvcFR5cGVzLm1hcCgodCkgPT4gYCcke3R9J2ApLmpvaW4oXCIsIFwiKX0g7KSRIO2VmOuCmOyXrOyVvCDtlanri4jri6QuIOyeheugpeqwkjogXCIkeyhpc3MuaW5wdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy50eXBlfVwiYCxcbiAgICB9LFxuICApXG4gIC5zdXBlclJlZmluZSgoZGF0YSwgY3R4KSA9PiB7XG4gICAgaWYgKCFkYXRhLmdlbmVyYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGRiRGVmYXVsdOyZgCBnZW5lcmF0ZWQg64+Z7IucIOyCrOyaqSDrtojqsIBcbiAgICBpZiAoZGF0YS5kYkRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgbWVzc2FnZTogXCJkYkRlZmF1bHTsmYAgZ2VuZXJhdGVk64qUIO2VqOq7mCDsgqzsmqntlaAg7IiYIOyXhuyKteuLiOuLpFwiLFxuICAgICAgICBwYXRoOiBbXCJnZW5lcmF0ZWRcIl0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyB2aXJ0dWFsIO2DgOyeheydgCBnZW5lcmF0ZWQg67aI6rCAXG4gICAgaWYgKGRhdGEudHlwZSA9PT0gXCJ2aXJ0dWFsXCIpIHtcbiAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwidmlydHVhbCDtg4DsnoXsnYAgZ2VuZXJhdGVkIGNvbHVtbuydhCDsp4Dsm5DtlZjsp4Ag7JWK7Iq164uI64ukXCIsXG4gICAgICAgIHBhdGg6IFtcImdlbmVyYXRlZFwiXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFZJUlRVQUwgR2VuZXJhdGVkIENvbHVtbiDtg4DsnoUg7KCc7ZWcIOqygOymnVxuICAgIGlmIChkYXRhLmdlbmVyYXRlZC50eXBlID09PSBcIlZJUlRVQUxcIikge1xuICAgICAgaWYgKChWaXJ0dWFsR2VuZXJhdGVkRGlzYWxsb3dlZFR5cGVzIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhkYXRhLnR5cGUpKSB7XG4gICAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgICBtZXNzYWdlOiBgVklSVFVBTCBnZW5lcmF0ZWQgY29sdW1u7J2AICR7ZGF0YS50eXBlfSDtg4DsnoXsnYQg7KeA7JuQ7ZWY7KeAIOyViuyKteuLiOuLpC4gU1RPUkVE66W8IOyCrOyaqe2VmOyEuOyalC5gLFxuICAgICAgICAgIHBhdGg6IFtcImdlbmVyYXRlZFwiLCBcInR5cGVcIl0sXG4gICAgICAgICAgZmF0YWw6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbmNvbnN0IEFsbFByb3BUeXBlcyA9IFsuLi5Ob3JtYWxQcm9wVHlwZXMsIFwicmVsYXRpb25cIl0gYXMgY29uc3Q7XG5jb25zdCBFbnRpdHlQcm9wU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtOb3JtYWxQcm9wU2NoZW1hLCBSZWxhdGlvblByb3BTY2hlbWFdLCB7XG4gIGVycm9yOiAoaXNzKSA9PlxuICAgIGB0eXBl7J2AICR7QWxsUHJvcFR5cGVzLm1hcCgodCkgPT4gYCcke3R9J2ApLmpvaW4oXCIsIFwiKX0g7KSRIO2VmOuCmOyXrOyVvCDtlanri4jri6QuIOyeheugpeqwkjogXCIkeyhpc3MuaW5wdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy50eXBlfVwiYCxcbn0pO1xuXG5jb25zdCBFbnRpdHlJbmRleENvbHVtblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgbnVsbHNGaXJzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgc29ydE9yZGVyOiB6LmVudW0oW1wiQVNDXCIsIFwiREVTQ1wiXSkub3B0aW9uYWwoKSxcbiAgdmVjdG9yT3BzOiB6LmVudW0oW1widmVjdG9yX2Nvc2luZV9vcHNcIiwgXCJ2ZWN0b3JfaXBfb3BzXCIsIFwidmVjdG9yX2wyX29wc1wiXSkub3B0aW9uYWwoKSxcbiAgb3BjbGFzczogei51bmlvbihbei5lbnVtKEtub3duT3BjbGFzc1ZhbHVlcyksIHouc3RyaW5nKCkubWluKDEpXSkub3B0aW9uYWwoKSxcbn0pO1xuXG4vLyBFbnRpdHlJbmRleCDsiqTtgqTrp4gg7KCV7J2YXG5jb25zdCBFbnRpdHlJbmRleFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdHlwZTogei5lbnVtKFtcImluZGV4XCIsIFwidW5pcXVlXCIsIFwiaG5zd1wiLCBcIml2ZmZsYXRcIl0pLFxuICAgIGNvbHVtbnM6IHouYXJyYXkoRW50aXR5SW5kZXhDb2x1bW5TY2hlbWEpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLm1heCg2MyksXG4gICAgdXNpbmc6IHouZW51bShbXCJidHJlZVwiLCBcImhhc2hcIiwgXCJnaW5cIiwgXCJnaXN0XCIsIFwicGdyb29uZ2FcIl0pLm9wdGlvbmFsKCksXG4gICAgbnVsbHNOb3REaXN0aW5jdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBtOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgZWZDb25zdHJ1Y3Rpb246IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBsaXN0czogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbi8qKlxuICogU3Vic2V0RGVmIOyKpO2CpOuniFxuICpcbiAqIO2VmOychCDtmLjtmZjshLHsnYQg7JyE7ZW0IOuwsOyXtCDtmJXtg5zsmYAg6rCd7LK0IO2Yle2DnCDrkZgg64ukIOyngOybkO2VqeuLiOuLpC5cbiAqL1xuY29uc3QgU3Vic2V0RGVmU2NoZW1hID0gei51bmlvbihbXG4gIC8vIOq4sOyhtCDrsLDsl7Qg7ZiV7YOcXG4gIHouYXJyYXkoei51bmlvbihbei5zdHJpbmcoKSwgei5vYmplY3QoeyBmaWVsZDogei5zdHJpbmcoKSwgaW50ZXJuYWw6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkgfSldKSksXG4gIC8vIOyDiOuhnOyatCDqsJ3ssrQg7ZiV7YOcXG4gIHoub2JqZWN0KHtcbiAgICBmaWVsZHM6IHouYXJyYXkoXG4gICAgICB6LnVuaW9uKFt6LnN0cmluZygpLCB6Lm9iamVjdCh7IGZpZWxkOiB6LnN0cmluZygpLCBpbnRlcm5hbDogei5ib29sZWFuKCkub3B0aW9uYWwoKSB9KV0pLFxuICAgICksXG4gICAgY29uZTogQ29uZVNjaGVtYS5vcHRpb25hbCgpLFxuICB9KSxcbl0pO1xuXG4vKipcbiAqIEVudW1EZWYg7Iqk7YKk66eIXG4gKlxuICog7ZWY7JyEIO2YuO2ZmOyEseydhCDsnITtlbQgUmVjb3JkIO2Yle2DnOyZgCDqsJ3ssrQg7ZiV7YOcIOuRmCDri6Qg7KeA7JuQ7ZWp64uI64ukLlxuICovXG5jb25zdCBFbnVtRGVmU2NoZW1hID0gei51bmlvbihbXG4gIC8vIOq4sOyhtCBSZWNvcmQg7ZiV7YOcXG4gIHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLFxuICAvLyDsg4jroZzsmrQg6rCd7LK0IO2Yle2DnFxuICB6Lm9iamVjdCh7XG4gICAgdmFsdWVzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKSxcbiAgICBjb25lOiBDb25lU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pLFxuXSk7XG5cbmZ1bmN0aW9uIHVud3JhcFNlYXJjaFRleHRKc29uU291cmNlVHlwZSh6b2RUeXBlOiB6LlpvZFR5cGVBbnkpOiB6LlpvZFR5cGVBbnkge1xuICBsZXQgY3VycmVudCA9IHpvZFR5cGU7XG5cbiAgd2hpbGUgKGN1cnJlbnQgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsIHx8IGN1cnJlbnQgaW5zdGFuY2VvZiB6LlpvZE51bGxhYmxlKSB7XG4gICAgY3VycmVudCA9IGN1cnJlbnQudW53cmFwKCkgYXMgei5ab2RUeXBlQW55O1xuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlYXJjaFRleHRKc29uU291cmNlWm9kVHlwZSh6b2RUeXBlOiB6LlpvZFR5cGVBbnkpOiBib29sZWFuIHtcbiAgY29uc3QgYmFzZVR5cGUgPSB1bndyYXBTZWFyY2hUZXh0SnNvblNvdXJjZVR5cGUoem9kVHlwZSk7XG4gIGlmICghKGJhc2VUeXBlIGluc3RhbmNlb2Ygei5ab2RBcnJheSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBlbGVtZW50VHlwZSA9IGJhc2VUeXBlLmRlZi5lbGVtZW50O1xuICByZXR1cm4gZWxlbWVudFR5cGUgaW5zdGFuY2VvZiB6LlpvZFN0cmluZztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTZWFyY2hUZXh0U291cmNlcyhcbiAgcHJvcHM6IHJlYWRvbmx5IHouaW5mZXI8dHlwZW9mIEVudGl0eVByb3BTY2hlbWE+W10sXG4gIGN0eDogei5SZWZpbmVtZW50Q3R4LFxuICBwcm9wc1BhdGg6IChzdHJpbmcgfCBudW1iZXIpW10gPSBbXCJwcm9wc1wiXSxcbik6IHZvaWQge1xuICBjb25zdCBwcm9wc0J5TmFtZSA9IG5ldyBNYXAoXG4gICAgcHJvcHMubWFwKChwcm9wKSA9PiB7XG4gICAgICByZXR1cm4gW3Byb3AubmFtZSwgcHJvcF07XG4gICAgfSksXG4gICk7XG5cbiAgcHJvcHMuZm9yRWFjaCgocHJvcCwgcHJvcEluZGV4KSA9PiB7XG4gICAgaWYgKHByb3AudHlwZSAhPT0gXCJzZWFyY2hUZXh0XCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm9wLnNvdXJjZUNvbHVtbnMuZm9yRWFjaCgoc291cmNlLCBzb3VyY2VJbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlUHJvcCA9IHByb3BzQnlOYW1lLmdldChzb3VyY2UubmFtZSk7XG4gICAgICBjb25zdCBzb3VyY2VQYXRoID0gWy4uLnByb3BzUGF0aCwgcHJvcEluZGV4LCBcInNvdXJjZUNvbHVtbnNcIiwgc291cmNlSW5kZXgsIFwibmFtZVwiXTtcblxuICAgICAgaWYgKCFzb3VyY2VQcm9wKSB7XG4gICAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgICBtZXNzYWdlOiBgc2VhcmNoVGV4dCBzb3VyY2UgY29sdW1uIFwiJHtzb3VyY2UubmFtZX1cIuydhCjrpbwpIOywvuydhCDsiJgg7JeG7Iq164uI64ukLmAsXG4gICAgICAgICAgcGF0aDogc291cmNlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHNvdXJjZVByb3AudHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBzb3VyY2VQcm9wLnR5cGUgPT09IFwic3RyaW5nW11cIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChzb3VyY2VQcm9wLnR5cGUgPT09IFwianNvblwiKSB7XG4gICAgICAgIC8vIGpzb24gc291cmNl7J2YIOy1nOyihSDtg4DsnoUg7Jyg7Zqo7ISx7J2AIEVudGl0eU1hbmFnZXIucmVnaXN0ZXIoKSDri6jqs4Tsl5DshJxcbiAgICAgICAgLy8g7Iuk7KCcIFpvZCDtg4DsnoXsnYQg7ZW07ISd7ZWY7JesIOq1rOyhsOyggeycvOuhnCDqsoDspp3tlanri4jri6QuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgbWVzc2FnZTogYHNlYXJjaFRleHQgc291cmNlIGNvbHVtbiBcIiR7c291cmNlLm5hbWV9XCLsnZgg7YOA7J6FIFwiJHtzb3VyY2VQcm9wLnR5cGV9XCLsnYAo64qUKSDsp4Dsm5DrkJjsp4Ag7JWK7Iq164uI64ukLmAsXG4gICAgICAgIHBhdGg6IHNvdXJjZVBhdGgsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmNvbnN0IEVudGl0eUpzb25CYXNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBpZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlBhc2NhbENhc2XroZwg65CcIEVudGl0eSBJRFwiKSxcbiAgICB0aXRsZTogei5zdHJpbmcoKS5kZXNjcmliZShcIkVudGl0eSDsnbTrpoRcIiksXG4gICAgdGFibGU6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJzbmFrZV9jYXNl66GcIOuQnCDthYzsnbTruJTrqoVcIiksXG4gICAgcGFyZW50SWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIuu2gOuqqCBFbnRpdHkgSURcIiksXG4gICAgY29uZTogQ29uZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIHByb3BzOiB6LmFycmF5KEVudGl0eVByb3BTY2hlbWEpLFxuICAgIGluZGV4ZXM6IHouYXJyYXkoRW50aXR5SW5kZXhTY2hlbWEpLFxuICAgIHN1YnNldHM6IHoucmVjb3JkKHouc3RyaW5nKCksIFN1YnNldERlZlNjaGVtYSksXG4gICAgZW51bXM6IHoucmVjb3JkKHouc3RyaW5nKCksIEVudW1EZWZTY2hlbWEpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmV4cG9ydCBjb25zdCBFbnRpdHlKc29uU2NoZW1hID0gRW50aXR5SnNvbkJhc2VTY2hlbWEuc3VwZXJSZWZpbmUoKGVudGl0eSwgY3R4KSA9PiB7XG4gIHZhbGlkYXRlU2VhcmNoVGV4dFNvdXJjZXMoZW50aXR5LnByb3BzLCBjdHgpO1xufSk7XG5cbmNvbnN0IFRlbXBsYXRlRW50aXR5U2NoZW1hID0gRW50aXR5SnNvbkJhc2VTY2hlbWEub21pdCh7IGlkOiB0cnVlIH0pXG4gIC5leHRlbmQoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICB9KVxuICAucGFydGlhbCh7XG4gICAgdGFibGU6IHRydWUsXG4gICAgcHJvcHM6IHRydWUsXG4gICAgaW5kZXhlczogdHJ1ZSxcbiAgICBzdWJzZXRzOiB0cnVlLFxuICAgIGVudW1zOiB0cnVlLFxuICB9KVxuICAuc3VwZXJSZWZpbmUoKGVudGl0eSwgY3R4KSA9PiB7XG4gICAgaWYgKCFlbnRpdHkucHJvcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVNlYXJjaFRleHRTb3VyY2VzKGVudGl0eS5wcm9wcywgY3R4KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gIGVudGl0eTogVGVtcGxhdGVFbnRpdHlTY2hlbWEsXG4gIGluaXRfdHlwZXM6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGdlbmVyYXRlZDogei5vYmplY3Qoe30pLFxuICBnZW5lcmF0ZWRfc3NvOiB6Lm9iamVjdCh7fSksXG4gIGdlbmVyYXRlZF9odHRwOiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBtb2RlbDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGRlZmF1bHRTZWFyY2hGaWVsZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRlZmF1bHRPcmRlckJ5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBtb2RlbF90ZXN0OiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBicmlkZ2U6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHNlcnZpY2VzOiB6Lm9iamVjdCh7fSksXG4gIHZpZXdfbGlzdDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGV4dHJhOiB6LnVua25vd24oKSxcbiAgfSksXG4gIHZpZXdfbGlzdF9jb2x1bW5zOiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gICAgY29sdW1uczogelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIGxhYmVsOiB6LnN0cmluZygpLFxuICAgICAgICB0Yzogei5zdHJpbmcoKSxcbiAgICAgIH0pXG4gICAgICAuYXJyYXkoKSxcbiAgICBjb2x1bW5JbXBvcnRzOiB6LnN0cmluZygpLFxuICB9KSxcbiAgdmlld19zZWFyY2hfaW5wdXQ6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHZpZXdfZm9ybTogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICB9KSxcbiAgdmlld19pZF9hbGxfc2VsZWN0OiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB2aWV3X2VudW1zX2J1dHRvbnNldDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGVudW1JZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHF1ZXJpZXM6IHoub2JqZWN0KHt9KSxcbiAgZW50cnlfc2VydmVyOiB6Lm9iamVjdCh7fSksXG4gIHNkOiB6Lm9iamVjdCh7XG4gICAgdGFyZ2V0OiB6LmVudW0oW1wiYXBpXCIsIFwid2ViXCIsIFwiYXBwXCJdKSxcbiAgfSksXG59KTtcbmV4cG9ydCB0eXBlIFRlbXBsYXRlT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIFRlbXBsYXRlT3B0aW9ucz47XG5cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZUtleSA9IHouZW51bShbXG4gIFwiZW50aXR5XCIsXG4gIFwiaW5pdF90eXBlc1wiLFxuICBcImdlbmVyYXRlZFwiLFxuICBcImdlbmVyYXRlZF9zc29cIixcbiAgXCJnZW5lcmF0ZWRfaHR0cFwiLFxuICBcIm1vZGVsXCIsXG4gIFwibW9kZWxfdGVzdFwiLFxuICBcImJyaWRnZVwiLFxuICBcInNlcnZpY2VzXCIsXG4gIFwidmlld19saXN0XCIsXG4gIFwidmlld19saXN0X2NvbHVtbnNcIixcbiAgXCJ2aWV3X3NlYXJjaF9pbnB1dFwiLFxuICBcInZpZXdfZm9ybVwiLFxuICBcInZpZXdfaWRfYWxsX3NlbGVjdFwiLFxuICBcInZpZXdfZW51bXNfYnV0dG9uc2V0XCIsXG4gIFwicXVlcmllc1wiLFxuICBcImVudHJ5X3NlcnZlclwiLFxuICBcInNkXCIsXG5dKTtcbmV4cG9ydCB0eXBlIFRlbXBsYXRlS2V5ID0gei5pbmZlcjx0eXBlb2YgVGVtcGxhdGVLZXk+O1xuXG5leHBvcnQgY29uc3QgR2VuZXJhdGVPcHRpb25zID0gei5vYmplY3Qoe1xuICBvdmVyd3JpdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEdlbmVyYXRlT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIEdlbmVyYXRlT3B0aW9ucz47XG5cbmV4cG9ydCBjb25zdCBQYXRoQW5kQ29kZSA9IHoub2JqZWN0KHtcbiAgcGF0aDogei5zdHJpbmcoKSxcbiAgY29kZTogei5zdHJpbmcoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUGF0aEFuZENvZGUgPSB6LmluZmVyPHR5cGVvZiBQYXRoQW5kQ29kZT47XG5cbmV4cG9ydCB0eXBlIEZpeHR1cmVTZWFyY2hPcHRpb25zID0ge1xuICBlbnRpdHlJZDogc3RyaW5nO1xuICBmaWVsZDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBzZWFyY2hUeXBlOiBcImVxdWFsc1wiIHwgXCJsaWtlXCI7XG59O1xuXG50eXBlIENvbHVtblZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBudWxsO1xuZXhwb3J0IHR5cGUgRml4dHVyZVJlY29yZCA9IHtcbiAgZml4dHVyZUlkOiBzdHJpbmc7XG4gIGVudGl0eUlkOiBzdHJpbmc7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmc7XG4gIGNvbHVtbnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICBwcm9wOiBFbnRpdHlQcm9wO1xuICAgICAgdmFsdWU6IENvbHVtblZhbHVlIHwgQ29sdW1uVmFsdWVbXTtcbiAgICB9O1xuICB9O1xuICBmZXRjaGVkUmVjb3Jkczogc3RyaW5nW107XG4gIGJlbG9uZ3NSZWNvcmRzOiBzdHJpbmdbXTtcbiAgdGFyZ2V0PzogRml4dHVyZVJlY29yZDsgLy8gSW1wb3J0IOuMgOyDgSBEQiDroIjsvZTrk5woaWTqsIAg6rCZ7J2AKVxuICB1bmlxdWU/OiBGaXh0dXJlUmVjb3JkOyAvLyBJbXBvcnQg64yA7IOBIERCIOugiOy9lOuTnCh1bmlxdWUga2V56rCAIOqwmeydgClcbiAgb3ZlcnJpZGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRml4dHVyZUltcG9ydFJlc3VsdCA9IHtcbiAgZW50aXR5SWQ6IHN0cmluZztcbiAgZGF0YToge1xuICAgIFtrZXk6IHN0cmluZ106IENvbHVtblZhbHVlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25Ob2RlID0ge1xuICBmaXh0dXJlSWQ6IHN0cmluZztcbiAgZW50aXR5SWQ6IHN0cmluZztcbiAgcmVsYXRlZDogU2V0PHN0cmluZz47XG59O1xuXG4vLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZSAtLSBzb25hbXUuZ2VuZXJhdGVkLnNzbyDsl5DshJwg7ZmV7J6l7J2EIOychO2VtCDspIDruYTrkJwg67mIIOyduO2EsO2OmOydtOyKpFxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCB7fVxuLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2UgLS0gc29uYW11LmdlbmVyYXRlZC5zc28g7JeQ7IScIO2ZleyepeydhCDsnITtlbQg7KSA67mE65CcIOu5iCDsnbjthLDtjpjsnbTsiqRcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGb3JlaWduS2V5cyB7fVxuZXhwb3J0IHR5cGUgTWFueVRvTWFueUJhc2VTY2hlbWE8XG4gIEZyb21JZEtleSBleHRlbmRzIHN0cmluZyxcbiAgVG9JZEtleSBleHRlbmRzIHN0cmluZyxcbiAgRnJvbVBrVHlwZSA9IG51bWJlcixcbiAgVG9Qa1R5cGUgPSBudW1iZXIsXG4+ID0ge1xuICBpZDogbnVtYmVyO1xufSAmIHtcbiAgW0sgaW4gYCR7RnJvbUlkS2V5fV9pZGBdOiBGcm9tUGtUeXBlO1xufSAmIHtcbiAgW0sgaW4gYCR7VG9JZEtleX1faWRgXTogVG9Qa1R5cGU7XG59O1xuXG4vLyDqsJ3ssrQsIO2VqOyImCwg67mE64+Z6riwIO2VqOyImOulvCDrqqjrkZAg7Y+s6rSE7ZWY64qUIO2DgOyehVxuZXhwb3J0IHR5cGUgRXhlY3V0YWJsZTxUPiA9IFQgfCBQcm9taXNlPFQ+IHwgKCgpID0+IFQpIHwgKCgpID0+IFByb21pc2U8VD4pO1xuXG5leHBvcnQgdHlwZSBTb25hbXVGYXN0aWZ5Q29uZmlnID0ge1xuICBjb250ZXh0UHJvdmlkZXI6IChcbiAgICBkZWZhdWx0Q29udGV4dDogUGljazxcbiAgICAgIENvbnRleHQsXG4gICAgICBcInJlcXVlc3RcIiB8IFwicmVwbHlcIiB8IFwiaGVhZGVyc1wiIHwgXCJjcmVhdGVTU0VcIiB8IFwibmFpdGVTdG9yZVwiIHwgXCJsb2NhbGVcIiB8IFwidXNlclwiIHwgXCJzZXNzaW9uXCJcbiAgICA+LFxuICAgIHJlcXVlc3Q6IEZhc3RpZnlSZXF1ZXN0LFxuICAgIHJlcGx5OiBGYXN0aWZ5UmVwbHksXG4gICkgPT4gQ29udGV4dCB8IFByb21pc2U8Q29udGV4dD47XG4gIGd1YXJkSGFuZGxlcjogKFxuICAgIGd1YXJkOiBHdWFyZEtleSxcbiAgICByZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCxcbiAgICBhcGk6IHtcbiAgICAgIHR5cGVQYXJhbWV0ZXJzOiBBcGlQYXJhbVR5cGUuVHlwZVBhcmFtW107XG4gICAgICBwYXJhbWV0ZXJzOiBBcGlQYXJhbVtdO1xuICAgICAgcmV0dXJuVHlwZTogQXBpUGFyYW1UeXBlO1xuICAgICAgbW9kZWxOYW1lOiBzdHJpbmc7XG4gICAgICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgICBvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zO1xuICAgIH0sXG4gICkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIOyghOyXrSBDYWNoZS1Db250cm9sIO2VuOuTpOufrOyeheuLiOuLpC5cbiAgICog7JqU7LKtIO2DgOyehShhcGksIGFzc2V0cywgc3NyLCBjc3Ip7JeQIOuUsOudvCBDYWNoZS1Db250cm9sIOyEpOygleydhCDrsJjtmZjtlanri4jri6QuXG4gICAqIHVuZGVmaW5lZOulvCDrsJjtmZjtlZjrqbQg7YOA7J6F67OEIOq4sOuzuOqwkuydtCDsoIHsmqnrkKnri4jri6QuXG4gICAqL1xuICBjYWNoZUNvbnRyb2xIYW5kbGVyPzogQ2FjaGVDb250cm9sSGFuZGxlcjtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFVQSxTQUFnQixXQUFtQyxPQUEwQztBQUMzRixRQUFPQSxJQUFFLE1BQU0sQ0FBQyxPQUFPLE1BQU0sT0FBTyxDQUFDLENBQUM7Ozs7Ozs7QUErRXhDLFNBQWdCLGVBQWUsTUFBMEQ7QUFDdkYsUUFBTyxLQUFLLE1BQU0sUUFBUSxLQUFLOztBQXdWakMsU0FBZ0IscUJBQXFCLEdBQXdCO0FBQzNELFFBQU8sT0FBTyxNQUFNLFdBQVcsSUFBSSxFQUFFOztBQUV2QyxTQUFnQixzQkFBc0IsR0FBeUI7QUFDN0QsUUFBTyxPQUFPLE1BQU0sWUFBWSxFQUFFLGFBQWE7Ozs7O0FBZ0NqRCxTQUFnQixvQkFBb0IsS0FBK0Q7QUFDakcsUUFBTyxDQUFDLE1BQU0sUUFBUSxJQUFJLElBQUksWUFBWTs7Ozs7QUFNNUMsU0FBZ0Isa0JBQ2QsS0FDd0Q7QUFDeEQsUUFDRSxZQUFZLE9BQU8sRUFBRSxVQUFVLE9BQU8sSUFBSSxTQUFTLGFBQWEsT0FBTyxLQUFLLElBQUksQ0FBQyxTQUFTOzs7OztBQU85RixTQUFnQixnQkFBZ0IsS0FBK0I7QUFDN0QsUUFBTyxNQUFNLFFB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
|
|
802
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJuYW1lcyI6WyJ6Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcGx5LCB0eXBlIEZhc3RpZnlSZXF1ZXN0IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHR5cGUgQXBpRGVjb3JhdG9yT3B0aW9ucywgdHlwZSBDb250ZXh0IH0gZnJvbSBcIi4uL2FwaVwiO1xuaW1wb3J0IHsgdHlwZSBDYWNoZUNvbnRyb2xIYW5kbGVyIH0gZnJvbSBcIi4uL2NhY2hlLWNvbnRyb2wvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgR3VhcmRLZXkgfSBmcm9tIFwiLi8uLi9hcGkvZGVjb3JhdG9yc1wiO1xuXG4vKlxuICBVdGlsaXR5IFR5cGVzXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIHpBcnJheWFibGU8VCBleHRlbmRzIHouWm9kVHlwZUFueT4oc2hhcGU6IFQpOiB6LlpvZFVuaW9uPFtULCB6LlpvZEFycmF5PFQ+XT4ge1xuICByZXR1cm4gei51bmlvbihbc2hhcGUsIHNoYXBlLmFycmF5KCldKTtcbn1cbi8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIGFueSBpcyB1c2VkIHRvIG1ha2UgdGhlIHR5cGUgZGlzdHJpYnV0aXZlXG5leHBvcnQgdHlwZSBEaXN0cmlidXRpdmVPbWl0PFQsIEsgZXh0ZW5kcyBrZXlvZiBhbnk+ID0gVCBleHRlbmRzIGFueSA/IE9taXQ8VCwgSz4gOiBuZXZlcjtcblxuLypcbiAgTW9kZWwtRGVmaW5pdGlvblxuKi9cblxuLyoqXG4gKiDrtoDrqqggRW50aXR5IGZpeHR1cmUg7IOd7ISxIOyLnCDtlajqu5gg7IOd7ISx7ZWgIGNvbXBhbmlvbiBFbnRpdHkg7ISk7KCVXG4gKlxuICog7JiIOiBVc2VyIGZpeHR1cmUg7IOd7ISxIOyLnCBjcmVkZW50aWFscyBBY2NvdW5066W8IO2VqOq7mCDsg53shLFcbiAqL1xuZXhwb3J0IHR5cGUgRml4dHVyZUNvbXBhbmlvbiA9IHtcbiAgLyoqIO2VqOq7mCDsg53shLHtlaAgRW50aXR5IOydtOumhCAqL1xuICBlbnRpdHk6IHN0cmluZztcblxuICAvKipcbiAgICog6rOg7KCVIOyYpOuyhOudvOydtOuTnCDqsJIuXG4gICAqIFwie3tmaWVsZE5hbWV9fVwiIO2YleyLneycvOuhnCDrtoDrqqggZml4dHVyZeydmCDtlYTrk5wg6rCS7J2EIOywuOyhsO2VoCDsiJgg7J6I64ukLlxuICAgKiDsmIg6IHsgXCJhY2NvdW50X2lkXCI6IFwie3tlbWFpbH19XCIgfSDihpIg67aA66qoIFVzZXLsnZggZW1haWwg6rCSIOyCrOyaqVxuICAgKi9cbiAgb3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIOu2gOuqqCAx6rCc64u5IOyDneyEse2VoCBjb21wYW5pb24g6rCc7IiYLiDquLDrs7jqsJIgMS5cbiAgICog7JiIOiBjb3VudDogMiDihpIgVXNlciAx6rCc64u5IGNvbXBhbmlvbiAy6rCcIOyDneyEsVxuICAgKi9cbiAgY291bnQ/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIGNvbmU6IOuylOyaqSDrqZTtg4DrjbDsnbTthLAg7Iuc7Iqk7YWcXG4gKlxuICogRW50aXR5LCBQcm9wLCBFbnVtLCBTdWJzZXTsl5AgXCLshpTrsKnsmrjsnYQg64uo64ukXCLripQg6rCc64WQ7Jy866GcIOu2meydtOuKlCDri6jsnbwg7ISc7IigIOuplO2DgOuNsOydtO2EsOyeheuLiOuLpC5cbiAqIG5vdGUg7ZWY64KY66GcIOu5hOymiOuLiOyKpCDsnZjrr7jsmYAgZml4dHVyZSDsg53shLEg7Z6M7Yq466W8IO2VqOq7mCDquLDsiKDtlanri4jri6QuXG4gKi9cbmV4cG9ydCB0eXBlIENvbmUgPSB7XG4gIG5vdGU/OiBzdHJpbmc7IC8vIOydtCDrjIDsg4HsnbQg66y07JeH7J247KeAIOyEpOuqhSAo67mE7KaI64uI7IqkIOydmOuvuCArIGZpeHR1cmUg7Z6M7Yq4IO2Gte2VqSlcbiAgdGFncz86IHN0cmluZ1tdOyAvLyDrtoTrpZgv6rKA7IOJ7JqpIO2DnOq3uFxuXG4gIC8vIEZpeHR1cmUg7IOd7ISxIOq0gOugqFxuICBmaXh0dXJlR2VuZXJhdG9yPzogc3RyaW5nOyAvLyBGYWtlci5qcyDsvZTrk5wg65iQ64qUIOy7pOyKpO2FgCDtlajsiJhcbiAgZml4dHVyZURlZmF1bHQ/OiB1bmtub3duOyAvLyDquLDrs7jqsJJcbiAgZml4dHVyZVN0cmF0ZWd5PzogXCJzZXF1ZW5jZVwiOyAvLyBzdHJpbmcg7YOA7J6F7J207KeA66eMIERCIHNlcXVlbmNl66GcIOq0gOumrOuQmOuKlCBQSyAoYmV0dGVyLWF1dGgg65OxKVxuICBmaXh0dXJlQ29tcGFuaW9ucz86IEZpeHR1cmVDb21wYW5pb25bXTsgLy8g67aA66qoIGZpeHR1cmUg7IOd7ISxIOyLnCDtlajqu5gg7IOd7ISx7ZWgIGNvbXBhbmlvbiBFbnRpdHkg66qp66GdXG4gIGZpeHR1cmVQYXJlbnRPdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgLy8gcGFyZW50SWQg7JeU7Yuw7Yuw7J2YIOu2gOuqqCDsg53shLEg7IucIOyCrOyaqe2VoCBvdmVycmlkZSDqsJIgKOyYiDogeyBhY2hpZXZlbWVudF90eXBlOiBcIlBBUEVSXCIgfSlcblxuICAvLyDssLjsobAg642w7J207YSwIOq0gOugqFxuICBkYXRhU291cmNlPzoge1xuICAgIHN0cmF0ZWd5OiBcInNhbXBsZVwiIHwgXCJpZHNcIiB8IFwicXVlcnlcIiB8IFwiZmlsZVwiIHwgXCJyZWNlbnRcIiB8IFwicmFuZG9tXCI7XG4gICAgY29uZmlnPzogdW5rbm93bjsgLy8g7KCE656167OEIOyEpOyglVxuICB9O1xuXG4gIC8vIO2ZleyepeyEsVxuICBba2V5OiBzdHJpbmddOiB1bmtub3duOyAvLyDsgqzsmqnsnpAg7KCV7J2YIOuplO2DgOuNsOydtO2EsFxufTtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVkQ29sdW1uVHlwZSA9IFwiU1RPUkVEXCIgfCBcIlZJUlRVQUxcIjtcbmV4cG9ydCB0eXBlIEdlbmVyYXRlZENvbHVtbiA9IHtcbiAgdHlwZTogR2VuZXJhdGVkQ29sdW1uVHlwZTtcbiAgZXhwcmVzc2lvbjogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIENvbW1vblByb3AgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbnVsbGFibGU/OiBib29sZWFuO1xuICB0b0ZpbHRlcj86IHRydWU7XG4gIGRlc2M/OiBzdHJpbmc7XG4gIGRiRGVmYXVsdD86IHN0cmluZztcbiAgZ2VuZXJhdGVkPzogR2VuZXJhdGVkQ29sdW1uO1xuICBjb25lPzogQ29uZTsgLy8gY29uZSDrqZTtg4DrjbDsnbTthLBcbn07XG5cbi8qKlxuICogcHJvcOydmCDshKTrqoXsnYQg67CY7ZmY7ZWp64uI64ukLlxuICpcbiAqIGNvbmUubm90ZeqwgCDsnojsnLzrqbQg7Jqw7ISgIOyCrOyaqe2VmOqzoCwg7JeG7Jy866m0IHByb3AuZGVzY+ulvCDsgqzsmqntlanri4jri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdGlvbihpdGVtOiB7IGRlc2M/OiBzdHJpbmc7IGNvbmU/OiBDb25lIH0pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaXRlbS5jb25lPy5ub3RlIHx8IGl0ZW0uZGVzYztcbn1cbmV4cG9ydCB0eXBlIEludGVnZXJQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJpbnRlZ2VyXCI7XG59OyAvLyBQRzogaW50ZWdlciAvIFRTOiBudW1iZXIgLyBKU09OOiBudW1iZXJcbmV4cG9ydCB0eXBlIEludGVnZXJBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImludGVnZXJbXVwiO1xufTsgLy8gUEc6IGludGVnZXJbXSAvIFRTOiBudW1iZXJbXSAvIEpTT046IG51bWJlcltdXG5leHBvcnQgdHlwZSBCaWdJbnRlZ2VyUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiYmlnSW50ZWdlclwiO1xufTsgLy8gUEc6IGJpZ2ludCAvIFRTOiBiaWdpbnQgLyBKU09OOiBiaWdpbnRcbmV4cG9ydCB0eXBlIEJpZ0ludGVnZXJBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImJpZ0ludGVnZXJbXVwiO1xufTsgLy8gUEc6IGJpZ2ludFtdIC8gVFM6IGJpZ2ludFtdIC8gSlNPTjogYmlnaW50W11cblxuLyoqXG4gKiBab2QgNCBTdHJpbmcgRm9ybWF0IO2DgOyehVxuICogZW50aXR5Lmpzb27sl5DshJwgc3RyaW5nIO2DgOyeheydmCBwcm9w7JeQIHpvZEZvcm1hdCDsmLXshZjsnYQg7KeA7KCV7ZWY7JesXG4gKiBCYXNlU2NoZW1hIOyDneyEsSDsi5wgWm9k7J2YIHN0cmluZyBmb3JtYXQgdmFsaWRhdGlvbuydhCDsoIHsmqntlanri4jri6QuXG4gKi9cbmV4cG9ydCBjb25zdCBab2RTdHJpbmdGb3JtYXQgPSB6LmVudW0oW1xuICAvLyDquLDrs7gg7Y+s66e3XG4gIFwiZW1haWxcIixcbiAgXCJ1dWlkXCIsXG4gIFwidXJsXCIsXG4gIFwiaHR0cFVybFwiLFxuICBcImhvc3RuYW1lXCIsXG4gIFwiZW1vamlcIixcbiAgXCJiYXNlNjRcIixcbiAgXCJiYXNlNjR1cmxcIixcbiAgXCJoZXhcIixcbiAgXCJqd3RcIixcbiAgXCJuYW5vaWRcIixcbiAgXCJjdWlkXCIsXG4gIFwiY3VpZDJcIixcbiAgXCJ1bGlkXCIsXG4gIFwiaXB2NFwiLFxuICBcImlwdjZcIixcbiAgXCJtYWNcIixcbiAgXCJjaWRydjRcIixcbiAgXCJjaWRydjZcIixcbiAgLy8gaGFzaCDtj6zrp7cgKOyVjOqzoOumrOymmOuzhClcbiAgXCJoYXNoTWQ1XCIsXG4gIFwiaGFzaFNoYTFcIixcbiAgXCJoYXNoU2hhMjU2XCIsXG4gIFwiaGFzaFNoYTM4NFwiLFxuICBcImhhc2hTaGE1MTJcIixcbiAgLy8gSVNPIO2PrOunt1xuICBcImlzb0RhdGVcIixcbiAgXCJpc29UaW1lXCIsXG4gIFwiaXNvRGF0ZXRpbWVcIixcbiAgXCJpc29EdXJhdGlvblwiLFxuXSk7XG5leHBvcnQgdHlwZSBab2RTdHJpbmdGb3JtYXQgPSB6LmluZmVyPHR5cGVvZiBab2RTdHJpbmdGb3JtYXQ+O1xuXG5leHBvcnQgdHlwZSBTdHJpbmdQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJzdHJpbmdcIjtcbiAgbGVuZ3RoPzogbnVtYmVyOyAvLyBQRzogdmFyY2hhcihuKSwgdGV4dCAvIFRTOiBzdHJpbmcgLyBKU09OOiBzdHJpbmdcbiAgem9kRm9ybWF0PzogWm9kU3RyaW5nRm9ybWF0O1xufTsgLy8gUEc6IHRleHQgLyBUUzogc3RyaW5nIC8gSlNPTjogc3RyaW5nXG5leHBvcnQgdHlwZSBTdHJpbmdBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInN0cmluZ1tdXCI7XG4gIGxlbmd0aD86IG51bWJlcjsgLy8gUEc6IHZhcmNoYXIobilbXSwgdGV4dFtdIC8gVFM6IHN0cmluZ1tdIC8gSlNPTjogc3RyaW5nW11cbiAgem9kRm9ybWF0PzogWm9kU3RyaW5nRm9ybWF0O1xufTsgLy8gUEc6IHZhcmNoYXIobilbXSwgdGV4dFtdIC8gVFM6IHN0cmluZ1tdIC8gSlNPTjogc3RyaW5nW11cbmV4cG9ydCB0eXBlIEVudW1Qcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJlbnVtXCI7XG4gIGlkOiBzdHJpbmc7XG4gIGxlbmd0aD86IG51bWJlcjtcbn07IC8vIFBHOiB0ZXh0IC8gVFM6IHN0cmluZyAvIEpTT046IHN0cmluZ1xuZXhwb3J0IHR5cGUgRW51bUFycmF5UHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiZW51bVtdXCI7XG4gIGlkOiBzdHJpbmc7XG59OyAvLyBQRzogdGV4dFtdIC8gVFM6IHN0cmluZ1tdIC8gSlNPTjogc3RyaW5nW11cbmV4cG9ydCB0eXBlIE51bWJlclByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcIm51bWJlclwiO1xuICBwcmVjaXNpb24/OiBudW1iZXI7IC8vIFBHOiBudW1lcmljKHAsIHMpIC8gVFM6IG51bWJlciAvIEpTT046IG51bWJlclxuICBzY2FsZT86IG51bWJlcjsgLy8gUEc6IG51bWVyaWMocCwgcykgLyBUUzogbnVtYmVyIC8gSlNPTjogbnVtYmVyXG4gIG51bWJlclR5cGU/OiBcInJlYWxcIiB8IFwiZG91YmxlIHByZWNpc2lvblwiIHwgXCJudW1lcmljXCI7IC8vIOq4sOuzuOqwkjogbnVtZXJpY1xufTsgLy8gUEc6IG51bWVyaWMocCwgcykgLyBUUzogbnVtYmVyIC8gSlNPTjogbnVtYmVyXG5leHBvcnQgdHlwZSBOdW1iZXJBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcIm51bWJlcltdXCI7XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgc2NhbGU/OiBudW1iZXI7XG4gIG51bWJlclR5cGU/OiBcInJlYWxcIiB8IFwiZG91YmxlIHByZWNpc2lvblwiIHwgXCJudW1lcmljXCI7IC8vIOq4sOuzuOqwkjogbnVtZXJpY1xufTsgLy8gUEc6IG51bWVyaWMocCwgcylbXSAvIFRTOiBudW1iZXJbXSAvIEpTT046IG51bWJlcltdXG5leHBvcnQgdHlwZSBOdW1lcmljUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwibnVtZXJpY1wiO1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIHNjYWxlPzogbnVtYmVyO1xufTsgLy8gUEc6IG51bWVyaWMocCwgcykgLyBUUzogc3RyaW5nIC8gSlNPTjogc3RyaW5nXG5leHBvcnQgdHlwZSBOdW1lcmljQXJyYXlQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJudW1lcmljW11cIjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn07IC8vIFBHOiBudW1lcmljKHAsIHMpW10gLyBUUzogc3RyaW5nW10gLyBKU09OOiBzdHJpbmdbXVxuZXhwb3J0IHR5cGUgQm9vbGVhblByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImJvb2xlYW5cIjtcbn07IC8vIFBHOiBib29sZWFuIC8gVFM6IGJvb2xlYW4gLyBKU09OOiBib29sZWFuXG5leHBvcnQgdHlwZSBCb29sZWFuQXJyYXlQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJib29sZWFuW11cIjtcbn07IC8vIFBHOiBib29sZWFuW10gLyBUUzogYm9vbGVhbltdIC8gSlNPTjogYm9vbGVhbltdXG5leHBvcnQgdHlwZSBEYXRlUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiZGF0ZVwiO1xuICAvLyDquLDrs7jqsJLsnYAgMywgbWljcm9zZWNvbmRz66W8IOyTsOugpOuptCA27J2EIOyNqOyVvO2VqCAoMCB+IDYpXG4gIHByZWNpc2lvbj86IG51bWJlcjtcbn07IC8vIFBHOiB0aW1lc3RhbXB6IC8gVFM6IERhdGUgLyBKU09OOiBzdHJpbmcoSVNPU3RyaW5nKVxuZXhwb3J0IHR5cGUgRGF0ZUFycmF5UHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiZGF0ZVtdXCI7XG4gIC8vIOq4sOuzuOqwkuydgCAzLCBtaWNyb3NlY29uZHPrpbwg7JOw66Ck66m0IDbsnYQg7I2o7JW87ZWoICgwIH4gNilcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xufTsgLy8gUEc6IHRpbWVzdGFtcHR6W10gLyBUUzogRGF0ZVtdIC8gSlNPTjogc3RyaW5nW11cbmV4cG9ydCB0eXBlIEpzb25Qcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJqc29uXCI7XG4gIGlkOiBzdHJpbmc7XG59OyAvLyBQRzoganNvbiAvIFRTOiBhbnkoaWQpIC8gSlNPTjogYW55XG5leHBvcnQgdHlwZSBTZWFyY2hUZXh0U291cmNlQ29sdW1uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgU2VhcmNoVGV4dFByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInNlYXJjaFRleHRcIjtcbiAgc291cmNlQ29sdW1uczogU2VhcmNoVGV4dFNvdXJjZUNvbHVtbltdO1xufTsgLy8gUEc6IHRleHQgKGdlbmVyYXRlZCkgLyBUUzogc3RyaW5nIC8gSlNPTjogc3RyaW5nXG5leHBvcnQgdHlwZSBVdWlkUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwidXVpZFwiO1xufTsgLy8gUEc6IHV1aWQgLyBUUzogc3RyaW5nIC8gSlNPTjogc3RyaW5nXG5leHBvcnQgdHlwZSBVdWlkQXJyYXlQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJ1dWlkW11cIjtcbn07IC8vIFBHOiB1dWlkW10gLyBUUzogc3RyaW5nW10gLyBKU09OOiBzdHJpbmdbXVxuZXhwb3J0IHR5cGUgVmlydHVhbFByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInZpcnR1YWxcIjtcbiAgaWQ6IHN0cmluZztcbiAgdmlydHVhbFR5cGU/OiBcInF1ZXJ5XCIgfCBcImNvZGVcIjsgLy8gZGVmYXVsdDogXCJjb2RlXCJcbn07IC8vIFBHOiBub25lIC8gVFM6IGFueShpZCkgLyBKU09OOiBhbnlcbmV4cG9ydCB0eXBlIFZlY3RvclByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInZlY3RvclwiO1xuICBkaW1lbnNpb25zOiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgVmVjdG9yQXJyYXlQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJ2ZWN0b3JbXVwiO1xuICBkaW1lbnNpb25zOiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgVHNWZWN0b3JQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJ0c3ZlY3RvclwiO1xufTtcbmV4cG9ydCB0eXBlIFJlbGF0aW9uVHlwZSA9IFwiSGFzTWFueVwiIHwgXCJCZWxvbmdzVG9PbmVcIiB8IFwiTWFueVRvTWFueVwiIHwgXCJPbmVUb09uZVwiO1xuZXhwb3J0IHR5cGUgUmVsYXRpb25PbiA9IFwiQ0FTQ0FERVwiIHwgXCJTRVQgTlVMTFwiIHwgXCJOTyBBQ1RJT05cIiB8IFwiU0VUIERFRkFVTFRcIiB8IFwiUkVTVFJJQ1RcIjtcbnR5cGUgX1JlbGF0aW9uUHJvcCA9IHtcbiAgdHlwZTogXCJyZWxhdGlvblwiO1xuICBuYW1lOiBzdHJpbmc7XG4gIHdpdGg6IHN0cmluZztcbiAgbnVsbGFibGU/OiBib29sZWFuOyAvLyBERUZBVUxUOiBmYWxzZVxuICB0b0ZpbHRlcj86IHRydWU7IC8vIERFRkFVTFQ6IGZhbHNlXG4gIGRlc2M/OiBzdHJpbmc7XG4gIGNvbmU/OiBDb25lOyAvLyBjb25lIOuplO2DgOuNsOydtO2EsFxufTtcbmV4cG9ydCB0eXBlIE9uZVRvT25lUmVsYXRpb25Qcm9wID0gX1JlbGF0aW9uUHJvcCAmIHtcbiAgcmVsYXRpb25UeXBlOiBcIk9uZVRvT25lXCI7XG4gIGN1c3RvbUpvaW5DbGF1c2U/OiBzdHJpbmc7XG59ICYgKFxuICAgIHwge1xuICAgICAgICBoYXNKb2luQ29sdW1uOiB0cnVlO1xuICAgICAgICB1c2VDb25zdHJhaW50PzogYm9vbGVhbjsgLy8gREVGQVVMVDogdHJ1ZVxuICAgICAgICBvblVwZGF0ZT86IFJlbGF0aW9uT247IC8vIERFRkFVTFQ6IFJFU1RSSUNUXG4gICAgICAgIG9uRGVsZXRlPzogUmVsYXRpb25PbjsgLy8gREVGQVVMVDogUkVTVFJJQ1RcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgaGFzSm9pbkNvbHVtbjogZmFsc2U7XG4gICAgICB9XG4gICk7XG5leHBvcnQgdHlwZSBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AgPSBfUmVsYXRpb25Qcm9wICYge1xuICByZWxhdGlvblR5cGU6IFwiQmVsb25nc1RvT25lXCI7XG4gIGN1c3RvbUpvaW5DbGF1c2U/OiBzdHJpbmc7XG4gIHVzZUNvbnN0cmFpbnQ/OiBib29sZWFuOyAvLyBERUZBVUxUOiB0cnVlXG4gIG9uVXBkYXRlPzogUmVsYXRpb25PbjsgLy8gREVGQVVMVDogUkVTVFJJQ1RcbiAgb25EZWxldGU/OiBSZWxhdGlvbk9uOyAvLyBERUZBVUxUOiBSRVNUUklDVFxufTtcbmV4cG9ydCB0eXBlIEhhc01hbnlSZWxhdGlvblByb3AgPSBfUmVsYXRpb25Qcm9wICYge1xuICByZWxhdGlvblR5cGU6IFwiSGFzTWFueVwiO1xuICBqb2luQ29sdW1uOiBzdHJpbmc7XG4gIGZyb21Db2x1bW4/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgTWFueVRvTWFueVJlbGF0aW9uUHJvcCA9IF9SZWxhdGlvblByb3AgJiB7XG4gIHJlbGF0aW9uVHlwZTogXCJNYW55VG9NYW55XCI7XG4gIGpvaW5UYWJsZTogYCR7c3RyaW5nfV9fJHtzdHJpbmd9YDtcbiAgb25VcGRhdGU6IFJlbGF0aW9uT247XG4gIG9uRGVsZXRlOiBSZWxhdGlvbk9uO1xufTtcbmV4cG9ydCB0eXBlIFJlbGF0aW9uUHJvcCA9XG4gIHwgT25lVG9PbmVSZWxhdGlvblByb3BcbiAgfCBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BcbiAgfCBIYXNNYW55UmVsYXRpb25Qcm9wXG4gIHwgTWFueVRvTWFueVJlbGF0aW9uUHJvcDtcblxuZXhwb3J0IHR5cGUgRW50aXR5UHJvcCA9XG4gIHwgSW50ZWdlclByb3BcbiAgfCBJbnRlZ2VyQXJyYXlQcm9wXG4gIHwgQmlnSW50ZWdlclByb3BcbiAgfCBCaWdJbnRlZ2VyQXJyYXlQcm9wXG4gIHwgU3RyaW5nUHJvcFxuICB8IFN0cmluZ0FycmF5UHJvcFxuICB8IEVudW1Qcm9wXG4gIHwgRW51bUFycmF5UHJvcFxuICB8IE51bWJlclByb3BcbiAgfCBOdW1iZXJBcnJheVByb3BcbiAgfCBOdW1lcmljUHJvcFxuICB8IE51bWVyaWNBcnJheVByb3BcbiAgfCBCb29sZWFuUHJvcFxuICB8IEJvb2xlYW5BcnJheVByb3BcbiAgfCBEYXRlUHJvcFxuICB8IERhdGVBcnJheVByb3BcbiAgfCBVdWlkUHJvcFxuICB8IFV1aWRBcnJheVByb3BcbiAgfCBKc29uUHJvcFxuICB8IFNlYXJjaFRleHRQcm9wXG4gIHwgVmlydHVhbFByb3BcbiAgfCBWZWN0b3JQcm9wXG4gIHwgVmVjdG9yQXJyYXlQcm9wXG4gIHwgVHNWZWN0b3JQcm9wXG4gIHwgUmVsYXRpb25Qcm9wO1xuXG4vKipcbiAqIFNvbmFtdUZpbGUgVHlwZXNcbiAqXG4gKiDtjIzsnbwg7JeF66Gc65Oc66W8IOychO2VnCBKU09OIO2DgOyeheyeheuLiOuLpC5cbiAqIEVudGl0eeydmCBqc29uIOyGjeyEseyXkOyEnCBpZOuhnCBcIlNvbmFtdUZpbGVcIiDrmJDripQgXCJTb25hbXVGaWxlW11cIuydhCDsp4DsoJXtlZjsl6wg7IKs7Jqp7ZWp64uI64ukLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvbmFtdUZpbGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBtaW1lX3R5cGU6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgU29uYW11RmlsZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICB1cmw6IHouc3RyaW5nKCksXG4gICAgbWltZV90eXBlOiB6LnN0cmluZygpLFxuICAgIHNpemU6IHoubnVtYmVyKCksXG4gIH0pXG4gIC5kZXNjcmliZShcIlNvbmFtdUZpbGVcIik7XG5cbmV4cG9ydCBjb25zdCBTb25hbXVGaWxlQXJyYXlTY2hlbWEgPSB6LmFycmF5KFNvbmFtdUZpbGVTY2hlbWEpLmRlc2NyaWJlKFwiU29uYW11RmlsZVtdXCIpO1xuXG4vKipcbiAqIFNvbmFtdSDsvZTslrTsl5DshJwg7KCc6rO17ZWY64qUIOuCtOyepSBKU09OIO2DgOyehSBJRCDrqqnroZ1cbiAqIOyDiOuhnOyatCDrgrTsnqUg7YOA7J6FIOy2lOqwgCDsi5wg7J20IOuwsOyXtOyXkCDstpTqsIDtlZjrqbQg7J6Q64+Z7Jy866GcIFVJ7JeQIOuFuOy2nOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGNvbnN0IEJVSUxUX0lOX1RZUEVfSURTID0gW1wiU29uYW11RmlsZVwiLCBcIlNvbmFtdUZpbGVbXVwiXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJ1aWx0SW5UeXBlSWQgPSAodHlwZW9mIEJVSUxUX0lOX1RZUEVfSURTKVtudW1iZXJdO1xuXG4vKipcbiAqIHBndmVjdG9yIOqxsOumrCDsl7DsgrDsnpAg7YG0656Y7IqkXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiAtIGB2ZWN0b3JfY29zaW5lX29wc2A6IOy9lOyCrOyduCDqsbDrpqwgKENvc2luZSBEaXN0YW5jZSkgLSDqtozsnqVcbiAqICAgLSBTUUwg7Jew7IKw7J6QOiBgPD0+YFxuICogICAtIOuyoe2EsOydmCDrsKntlqXrp4wg67mE6rWQICjtgazquLAg66y07IucKSwgMSAtIGNvc2luZV9zaW1pbGFyaXR5XG4gKiAgIC0g7YWN7Iqk7Yq4IOyehOuyoOuUqSwg7Iuc66eo7YuxIOqygOyDieyXkCDqsIDsnqUg7J2867CY7KCB7Jy866GcIOyCrOyaqVxuICogICAtIOyCrOyaqSDsmIg6IE9wZW5BSSwgVm95YWdlIOuTsSDrjIDrtoDrtoTsnZgg7J6E67Kg65SpIOuqqOuNuOyXkCDqtozsnqVcbiAqXG4gKiAtIGB2ZWN0b3JfaXBfb3BzYDog64K07KCBIChJbm5lciBQcm9kdWN0KVxuICogICAtIFNRTCDsl7DsgrDsnpA6IGA8Iz5gXG4gKiAgIC0g65GQIOuyoe2EsOydmCDrgrTsoIHsnYQg6rOE7IKwIChzdW0oYVtpXSAqIGJbaV0pKVxuICogICAtIOygleq3nO2ZlOuQnCDrsqHthLDsl5DshJwg7L2U7IKs7J24IOycoOyCrOuPhOyZgCDrj5nsnbztlZwg6rKw6rO8XG4gKiAgIC0g6rCS7J20IO2BtOyImOuhnSDsnKDsgqwgKOydjOyImCDsl7DsgrDsnpDsnbTrr4DroZwgT1JERVIgQlnsl5DshJwg7KO87J2YKVxuICogICAtIOyCrOyaqSDsmIg6IOydtOuvuCDsoJXqt5ztmZTrkJwg7J6E67Kg65Sp7JeQ7IScIOqwgOyepSDruaDrpbgg7ISx64qlXG4gKlxuICogLSBgdmVjdG9yX2wyX29wc2A6IOycoO2BtOumrOuTnCDqsbDrpqwgKEwyIERpc3RhbmNlKVxuICogICAtIFNRTCDsl7DsgrDsnpA6IGA8LT5gXG4gKiAgIC0g65GQIOuyoe2EsCDqsITsnZgg7KeB7ISgIOqxsOumrOulvCDqs4TsgrAgKHNxcnQoc3VtKChhW2ldIC0gYltpXSleMikpKVxuICogICAtIOuyoe2EsOydmCDtgazquLAobWFnbml0dWRlKeqwgCDspJHsmpTtlaAg65WMIOyCrOyaqVxuICogICAtIOyCrOyaqSDsmIg6IOydtOuvuOyngCDsnKDsgqzrj4QsIOygiOuMgOyggSDqsbDrpqwg7Lih7KCV7J20IO2VhOyalO2VnCDqsr3smrBcbiAqL1xuZXhwb3J0IHR5cGUgVmVjdG9yT3BzID0gXCJ2ZWN0b3JfY29zaW5lX29wc1wiIHwgXCJ2ZWN0b3JfaXBfb3BzXCIgfCBcInZlY3Rvcl9sMl9vcHNcIjtcblxuZXhwb3J0IGNvbnN0IEtub3duT3BjbGFzc1ZhbHVlcyA9IFtcbiAgXCJnaW5fdHJnbV9vcHNcIixcbiAgXCJnaXN0X3RyZ21fb3BzXCIsXG4gIFwiZ2luX2JpZ21fb3BzXCIsXG4gIFwidmVjdG9yX2Nvc2luZV9vcHNcIixcbiAgXCJ2ZWN0b3JfaXBfb3BzXCIsXG4gIFwidmVjdG9yX2wyX29wc1wiLFxuICBcInBncm9vbmdhX3ZhcmNoYXJfZnVsbF90ZXh0X3NlYXJjaF9vcHNfdjJcIixcbiAgXCJwZ3Jvb25nYV9qc29uYl9mdWxsX3RleHRfc2VhcmNoX29wc192MlwiLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEtub3duT3BjbGFzcyA9ICh0eXBlb2YgS25vd25PcGNsYXNzVmFsdWVzKVtudW1iZXJdO1xuXG50eXBlIEVudGl0eUluZGV4Q29sdW1uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIG51bGxzRmlyc3Q/OiBib29sZWFuO1xuICBzb3J0T3JkZXI/OiBcIkFTQ1wiIHwgXCJERVNDXCI7XG4gIC8qKiBwZ3ZlY3RvciDsnbjrjbHsiqTsl5DshJwg7IKs7Jqp7ZWgIOqxsOumrCDsl7DsgrDsnpAgKHZlY3RvciDsu6zrn7zsl5Drp4wg7KCB7JqpKSAqL1xuICB2ZWN0b3JPcHM/OiBWZWN0b3JPcHM7XG4gIC8qKiBnZW5lcmljIOyduOuNseyKpCBvcGNsYXNzICh2ZWN0b3JPcHPripQg7ZWY7JyE7Zi47ZmYIOuqqeyggeycvOuhnCDsnKDsp4ApICovXG4gIG9wY2xhc3M/OiBLbm93bk9wY2xhc3MgfCBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRW50aXR5SW5kZXggPSB7XG4gIHR5cGU6IFwiaW5kZXhcIiB8IFwidW5pcXVlXCIgfCBcImhuc3dcIiB8IFwiaXZmZmxhdFwiO1xuICBjb2x1bW5zOiBFbnRpdHlJbmRleENvbHVtbltdO1xuICBuYW1lOiBzdHJpbmc7XG4gIHVzaW5nPzogXCJidHJlZVwiIHwgXCJoYXNoXCIgfCBcImdpblwiIHwgXCJnaXN0XCIgfCBcInBncm9vbmdhXCI7XG4gIG51bGxzTm90RGlzdGluY3Q/OiBib29sZWFuOyAvLyB1bmlxdWUgaW5kZXggb25seVxuICAvKipcbiAgICogSE5TVyAoSGllcmFyY2hpY2FsIE5hdmlnYWJsZSBTbWFsbCBXb3JsZCkg7J24642x7IqkOiDqsIEg64W465Oc7J2YIOy1nOuMgCDsl7DqsrAg7IiYXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiDqt7jrnpjtlITsl5DshJwg6rCBIOuFuOuTnOqwgCDqsIDsp4gg7IiYIOyeiOuKlCDstZzrjIAg7Jew6rKwIOyImOyeheuLiOuLpC5cbiAgICogSE5TV+uKlCDruaDrpbgg6rKA7IOJIOyGjeuPhOyZgCDrhpLsnYAg7KCV7ZmV64+E66W8IOygnOqzte2VmOuvgOuhnCDqtozsnqXrkKnri4jri6QuXG4gICAqIC0g6riw67O46rCSOiAxNlxuICAgKiAtIOuylOychDogMiB+IDEwMFxuICAgKiAtIOuGkuydhOyImOuhnTog7KCV7ZmV64+E4oaRLCDruYzrk5wg7Iuc6rCE4oaRLCDrqZTrqqjrpqzihpFcbiAgICogLSDqtozsnqU6IOu5oOuluCDruYzrk5woOCksIOq3oO2YlSgxNiksIOuGkuydgCDsoJXtmZXrj4QoMzIpLCDstZzqs6Ag7KCV7ZmV64+EKDY0KVxuICAgKi9cbiAgbT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEhOU1cgKEhpZXJhcmNoaWNhbCBOYXZpZ2FibGUgU21hbGwgV29ybGQpIOyduOuNseyKpDog6rWs7ISxIOyLnCDtg5Dsg4kg67KU7JyEXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiDsnbjrjbHsiqQg6rWs7ISxIOyLnCDqsIEg64W465Oc7JeQ7IScIO2DkOyDie2VoCDrspTsnITsnoXri4jri6QuXG4gICAqIC0g6riw67O46rCSOiA2NFxuICAgKiAtIOuylOychDogNCB+IDEwMDBcbiAgICogLSDrhpLsnYTsiJjroZ06IOygle2ZleuPhOKGkSwg67mM65OcIOyLnOqwhOKGkVxuICAgKiAtIOq2jOyepTog67mg66W4IOu5jOuTnCgzMiksIOq3oO2YlSg2NCksIOuGkuydgCDsoJXtmZXrj4QoMTI4KSwg7LWc6rOgIOygle2ZleuPhCgyNTYpXG4gICAqL1xuICBlZkNvbnN0cnVjdGlvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIElWRkZsYXQgKEludmVydGVkIEZpbGUgd2l0aCBGbGF0IENvbXByZXNzaW9uKSDsnbjrjbHsiqQ6IO2BtOufrOyKpO2EsOungSDrpqzsiqTtirgg7IiYXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiDrsqHthLDrpbwg7YG065+s7Iqk7YSw66eB7ZWgIOuyhO2CtyDsiJjrpbwg7KeA7KCV7ZWp64uI64ukLlxuICAgKiBJVkZGbGF07J2AIOu5oOuluCDruYzrk5zsmYAg64Ku7J2AIOuplOuqqOumrCDsgqzsmqnsnbQg7ZWE7JqU7ZWgIOuVjCDsgqzsmqntlanri4jri6QuXG4gICAqIC0g6raM7J6l6rCSOiBzcXJ0KHJvd19jb3VudCkgfiByb3dfY291bnQgLyAxMDAwXG4gICAqIC0g7JiI7IucOiAxMCwwMDDtlokg4oaSIDEwMCwgMTAwLDAwMO2WiSDihpIgMzAwLCAxLDAwMCwwMDDtlokg4oaSIDEwMDBcbiAgICogLSDrp47snYTsiJjroZ0g7KCV7ZmV64+E4oaRLCDqsoDsg4kg7IaN64+E4oaTXG4gICAqL1xuICBsaXN0cz86IG51bWJlcjtcbn07XG5cbi8vIFN1YnNldEZpZWxkIO2DgOyehTogc3RyaW5nIOuYkOuKlCBpbnRlcm5hbCDsmLXshZjsnbQg7J6I64qUIOqwneyytFxuZXhwb3J0IHR5cGUgU3Vic2V0RmllbGQgPSBzdHJpbmcgfCB7IGZpZWxkOiBzdHJpbmc7IGludGVybmFsPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU3Vic2V0RmllbGQoZjogU3Vic2V0RmllbGQpOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIGYgPT09IFwic3RyaW5nXCIgPyBmIDogZi5maWVsZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVybmFsU3Vic2V0RmllbGQoZjogU3Vic2V0RmllbGQpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBmICE9PSBcInN0cmluZ1wiICYmIGYuaW50ZXJuYWwgPT09IHRydWU7XG59XG5cbi8qKlxuICogU3Vic2V0RGVmOiBTdWJzZXQg7KCV7J2YXG4gKlxuICog7ZWY7JyEIO2YuO2ZmOyEseydhCDsnITtlbQgU3Vic2V0RmllbGRbXSDrsLDsl7Qg7ZiV7YOc64+EIOyngOybkO2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IHR5cGUgU3Vic2V0RGVmID1cbiAgfCBTdWJzZXRGaWVsZFtdIC8vIOq4sOyhtCDrsLDsl7Qg7ZiV7YOcXG4gIHwge1xuICAgICAgLy8g7IOI66Gc7Jq0IOqwneyytCDtmJXtg5xcbiAgICAgIGZpZWxkczogU3Vic2V0RmllbGRbXTtcbiAgICAgIGNvbmU/OiBDb25lO1xuICAgIH07XG5cbi8qKlxuICogRW51bURlZjogRW51bSDsoJXsnZhcbiAqXG4gKiDtlZjsnIQg7Zi47ZmY7ISx7J2EIOychO2VtCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IO2Yle2DnOuPhCDsp4Dsm5Dtlanri4jri6QuXG4gKi9cbmV4cG9ydCB0eXBlIEVudW1EZWYgPVxuICB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gLy8g6riw7KG0IFJlY29yZCDtmJXtg5xcbiAgfCB7XG4gICAgICAvLyDsg4jroZzsmrQg6rCd7LK0IO2Yle2DnFxuICAgICAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgICAgY29uZT86IENvbmU7XG4gICAgfTtcblxuLyoqXG4gKiBTdWJzZXREZWbqsIAg7IOI66Gc7Jq0IOqwneyytCDtmJXtg5zsnbjsp4Ag7ZmV7J24XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N1YnNldERlZldpdGhDb25lKGRlZjogU3Vic2V0RGVmKTogZGVmIGlzIHsgZmllbGRzOiBTdWJzZXRGaWVsZFtdOyBjb25lPzogQ29uZSB9IHtcbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRlZikgJiYgXCJmaWVsZHNcIiBpbiBkZWY7XG59XG5cbi8qKlxuICogRW51bURlZuqwgCDsg4jroZzsmrQg6rCd7LK0IO2Yle2DnOyduOyngCDtmZXsnbhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW51bURlZldpdGhDb25lKFxuICBkZWY6IEVudW1EZWYsXG4pOiBkZWYgaXMgeyB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47IGNvbmU/OiBDb25lIH0ge1xuICByZXR1cm4gKFxuICAgIFwidmFsdWVzXCIgaW4gZGVmICYmICEoXCJjb25lXCIgaW4gZGVmICYmIGRlZi5jb25lID09PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXMoZGVmKS5sZW5ndGggPiAxKVxuICApO1xufVxuXG4vKipcbiAqIFN1YnNldERlZuyXkOyEnCBmaWVsZHMg7LaU7LacXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWJzZXRGaWVsZHMoZGVmOiBTdWJzZXREZWYpOiBTdWJzZXRGaWVsZFtdIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGVmKSA/IGRlZiA6IGRlZi5maWVsZHM7XG59XG5cbi8qKlxuICogRW51bURlZuyXkOyEnCB2YWx1ZXMg7LaU7LacXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnVtRGVmVmFsdWVzKGRlZjogRW51bURlZik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4gaXNFbnVtRGVmV2l0aENvbmUoZGVmKSA/IGRlZi52YWx1ZXMgOiBkZWY7XG59XG5cbmV4cG9ydCB0eXBlIEVudGl0eUpzb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHBhcmVudElkPzogc3RyaW5nO1xuICB0YWJsZTogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgY29uZT86IENvbmU7IC8vIGNvbmUg66mU7YOA642w7J207YSwXG4gIHByb3BzOiBFbnRpdHlQcm9wW107XG4gIGluZGV4ZXM6IEVudGl0eUluZGV4W107XG4gIHN1YnNldHM6IHtcbiAgICBbc3Vic2V0OiBzdHJpbmddOiBTdWJzZXREZWY7XG4gIH07XG4gIGVudW1zOiB7XG4gICAgW2VudW1JZDogc3RyaW5nXTogRW51bURlZjtcbiAgfTtcbn07XG5leHBvcnQgdHlwZSBFbnRpdHlTdWJzZXRSb3cgPSB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGhhczoge1xuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG4gIH07XG4gIGlzSW50ZXJuYWw6IHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICB9O1xuICBjaGlsZHJlbjogRW50aXR5U3Vic2V0Um93W107XG4gIHByZWZpeGVzOiBzdHJpbmdbXTtcbiAgcmVsYXRpb25FbnRpdHk/OiBzdHJpbmc7XG4gIGlzT3Blbj86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgRmxhdHRlblN1YnNldFJvdyA9IE9taXQ8RW50aXR5U3Vic2V0Um93LCBcImNoaWxkcmVuXCI+O1xuXG4vKlxuICBQcm9wTm9kZVxuKi9cblxuLyoqXG4gKiDsl5Tti7Dti7DsnZgg7ZWE65OcIOq1rOyhsOulvCDtirjrpqwg7ZiV7YOc66GcIO2RnO2YhO2VmOuKlCDspJHqsIQg64W465Oc7J6F64uI64ukLlxuICpcbiAqICoq66qp7KCBKio6IEVudGl0eeydmCBzdWJzZXQg7ZWE65OcIO2RnO2YhOyLnSjsmIg6IFwiaWRcIiwgXCJ1c2VyLm5hbWVcIiwgXCJ0YWdzW11cIinsnYRcbiAqIOyerOq3gOyggeyduCDtirjrpqwg6rWs7KGw66GcIO2MjOyLse2VmOyXrCBab2Qg7Iqk7YKk66eIIOyDneyEseydmCDspJHqsIQg64uo6rOE66GcIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiAqKuuzgO2ZmCDtnZDrpoQqKjpcbiAqIEVudGl0eSBzdWJzZXQg4oaSIEVudGl0eVByb3BOb2RlICjtirjrpqwg6rWs7KGwKSDihpIgWm9kIOyKpO2CpOuniCDihpIgUmVuZGVyaW5nTm9kZSAoVUnsmqkpXG4gKlxuICogKipub2RlVHlwZSoqOlxuICogLSBcInBsYWluXCI6IOuLqOydvCDtlYTrk5wgKOyYiDogXCJpZFwiLCBcIm5hbWVcIilcbiAqIC0gXCJvYmplY3RcIjog7KSR7LKpIOqwneyytCAo7JiIOiBcInVzZXIubmFtZVwiIOKGkiB1c2VyIOqwneyytClcbiAqIC0gXCJhcnJheVwiOiDrsLDsl7QgKOyYiDogXCJ0YWdzW11cIiDihpIgdGFncyDrsLDsl7QpXG4gKlxuICogKirsgqzsmqkg7JyE7LmYKio6IGVudGl0eS1jb252ZXJ0ZXIudHPsnZggcHJvcE5vZGVUb1pvZFR5cGUoKVxuICovXG5leHBvcnQgdHlwZSBFbnRpdHlQcm9wTm9kZSA9XG4gIHwge1xuICAgICAgbm9kZVR5cGU6IFwicGxhaW5cIjtcbiAgICAgIHByb3A6IEVudGl0eVByb3A7XG4gICAgfVxuICB8IHtcbiAgICAgIG5vZGVUeXBlOiBcIm9iamVjdFwiIHwgXCJhcnJheVwiO1xuICAgICAgcHJvcD86IEVudGl0eVByb3A7XG4gICAgICBjaGlsZHJlbjogRW50aXR5UHJvcE5vZGVbXTtcbiAgICB9O1xuXG4vKlxuICBQcm9wIFR5cGUgR3VhcmRzXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZWdlclNpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgSW50ZWdlclByb3Age1xuICByZXR1cm4gKHAgYXMgSW50ZWdlclByb3ApPy50eXBlID09PSBcImludGVnZXJcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVnZXJBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgSW50ZWdlckFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBJbnRlZ2VyQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJpbnRlZ2VyW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVnZXJQcm9wKHA6IHVua25vd24pOiBwIGlzIEludGVnZXJQcm9wIHwgSW50ZWdlckFycmF5UHJvcCB7XG4gIHJldHVybiBpc0ludGVnZXJTaW5nbGVQcm9wKHApIHx8IGlzSW50ZWdlckFycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpZ0ludGVnZXJTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIEJpZ0ludGVnZXJQcm9wIHtcbiAgcmV0dXJuIChwIGFzIEJpZ0ludGVnZXJQcm9wKT8udHlwZSA9PT0gXCJiaWdJbnRlZ2VyXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaWdJbnRlZ2VyQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIEJpZ0ludGVnZXJBcnJheVByb3Age1xuICByZXR1cm4gKHAgYXMgQmlnSW50ZWdlckFycmF5UHJvcCk/LnR5cGUgPT09IFwiYmlnSW50ZWdlcltdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaWdJbnRlZ2VyUHJvcChwOiB1bmtub3duKTogcCBpcyBCaWdJbnRlZ2VyUHJvcCB8IEJpZ0ludGVnZXJBcnJheVByb3Age1xuICByZXR1cm4gaXNCaWdJbnRlZ2VyU2luZ2xlUHJvcChwKSB8fCBpc0JpZ0ludGVnZXJBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIFN0cmluZ1Byb3Age1xuICByZXR1cm4gKHAgYXMgU3RyaW5nUHJvcCk/LnR5cGUgPT09IFwic3RyaW5nXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgU3RyaW5nQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIFN0cmluZ0FycmF5UHJvcCk/LnR5cGUgPT09IFwic3RyaW5nW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ1Byb3AocDogdW5rbm93bik6IHAgaXMgU3RyaW5nUHJvcCB8IFN0cmluZ0FycmF5UHJvcCB7XG4gIHJldHVybiBpc1N0cmluZ1NpbmdsZVByb3AocCkgfHwgaXNTdHJpbmdBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFbnVtU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBFbnVtUHJvcCB7XG4gIHJldHVybiAocCBhcyBFbnVtUHJvcCk/LnR5cGUgPT09IFwiZW51bVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRW51bUFycmF5UHJvcChwOiB1bmtub3duKTogcCBpcyBFbnVtQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIEVudW1BcnJheVByb3ApPy50eXBlID09PSBcImVudW1bXVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRW51bVByb3AocDogdW5rbm93bik6IHAgaXMgRW51bVByb3AgfCBFbnVtQXJyYXlQcm9wIHtcbiAgcmV0dXJuIGlzRW51bVNpbmdsZVByb3AocCkgfHwgaXNFbnVtQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBOdW1iZXJQcm9wIHtcbiAgcmV0dXJuIChwIGFzIE51bWJlclByb3ApPy50eXBlID09PSBcIm51bWJlclwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIE51bWJlckFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBOdW1iZXJBcnJheVByb3ApPy50eXBlID09PSBcIm51bWJlcltdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXJQcm9wKHA6IHVua25vd24pOiBwIGlzIE51bWJlclByb3AgfCBOdW1iZXJBcnJheVByb3Age1xuICByZXR1cm4gaXNOdW1iZXJTaW5nbGVQcm9wKHApIHx8IGlzTnVtYmVyQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpY1NpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgTnVtZXJpY1Byb3Age1xuICByZXR1cm4gKHAgYXMgTnVtZXJpY1Byb3ApPy50eXBlID09PSBcIm51bWVyaWNcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgTnVtZXJpY0FycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBOdW1lcmljQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJudW1lcmljW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNQcm9wKHA6IHVua25vd24pOiBwIGlzIE51bWVyaWNQcm9wIHwgTnVtZXJpY0FycmF5UHJvcCB7XG4gIHJldHVybiBpc051bWVyaWNTaW5nbGVQcm9wKHApIHx8IGlzTnVtZXJpY0FycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW5TaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIEJvb2xlYW5Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIEJvb2xlYW5Qcm9wKT8udHlwZSA9PT0gXCJib29sZWFuXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIEJvb2xlYW5BcnJheVByb3Age1xuICByZXR1cm4gKHAgYXMgQm9vbGVhbkFycmF5UHJvcCk/LnR5cGUgPT09IFwiYm9vbGVhbltdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuUHJvcChwOiB1bmtub3duKTogcCBpcyBCb29sZWFuUHJvcCB8IEJvb2xlYW5BcnJheVByb3Age1xuICByZXR1cm4gaXNCb29sZWFuU2luZ2xlUHJvcChwKSB8fCBpc0Jvb2xlYW5BcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBEYXRlUHJvcCB7XG4gIHJldHVybiAocCBhcyBEYXRlUHJvcCk/LnR5cGUgPT09IFwiZGF0ZVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZUFycmF5UHJvcChwOiB1bmtub3duKTogcCBpcyBEYXRlQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIERhdGVBcnJheVByb3ApPy50eXBlID09PSBcImRhdGVbXVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZVByb3AocDogdW5rbm93bik6IHAgaXMgRGF0ZVByb3AgfCBEYXRlQXJyYXlQcm9wIHtcbiAgcmV0dXJuIGlzRGF0ZVNpbmdsZVByb3AocCkgfHwgaXNEYXRlQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVXVpZFNpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgVXVpZFByb3Age1xuICByZXR1cm4gKHAgYXMgVXVpZFByb3ApPy50eXBlID09PSBcInV1aWRcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1V1aWRBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgVXVpZEFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBVdWlkQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJ1dWlkW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1V1aWRQcm9wKHA6IHVua25vd24pOiBwIGlzIFV1aWRQcm9wIHwgVXVpZEFycmF5UHJvcCB7XG4gIHJldHVybiBpc1V1aWRTaW5nbGVQcm9wKHApIHx8IGlzVXVpZEFycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0pzb25Qcm9wKHA6IHVua25vd24pOiBwIGlzIEpzb25Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIEpzb25Qcm9wKT8udHlwZSA9PT0gXCJqc29uXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTZWFyY2hUZXh0UHJvcChwOiB1bmtub3duKTogcCBpcyBTZWFyY2hUZXh0UHJvcCB7XG4gIHJldHVybiAocCBhcyBTZWFyY2hUZXh0UHJvcCk/LnR5cGUgPT09IFwic2VhcmNoVGV4dFwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmlydHVhbFByb3AocDogdW5rbm93bik6IHAgaXMgVmlydHVhbFByb3Age1xuICByZXR1cm4gKHAgYXMgVmlydHVhbFByb3ApPy50eXBlID09PSBcInZpcnR1YWxcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZpcnR1YWxDb2RlUHJvcChwOiB1bmtub3duKTogcCBpcyBWaXJ0dWFsUHJvcCB7XG4gIGlmICghaXNWaXJ0dWFsUHJvcChwKSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gcC52aXJ0dWFsVHlwZSAhPT0gXCJxdWVyeVwiOyAvLyB1bmRlZmluZWTrj4QgXCJjb2RlXCLroZwg7Leo6riJXG59XG5leHBvcnQgZnVuY3Rpb24gaXNWaXJ0dWFsUXVlcnlQcm9wKHA6IHVua25vd24pOiBwIGlzIFZpcnR1YWxQcm9wIHtcbiAgaWYgKCFpc1ZpcnR1YWxQcm9wKHApKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBwLnZpcnR1YWxUeXBlID09PSBcInF1ZXJ5XCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIFZlY3RvclByb3Age1xuICByZXR1cm4gKHAgYXMgVmVjdG9yUHJvcCk/LnR5cGUgPT09IFwidmVjdG9yXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgVmVjdG9yQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIFZlY3RvckFycmF5UHJvcCk/LnR5cGUgPT09IFwidmVjdG9yW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlY3RvclByb3AocDogdW5rbm93bik6IHAgaXMgVmVjdG9yUHJvcCB8IFZlY3RvckFycmF5UHJvcCB7XG4gIHJldHVybiBpc1ZlY3RvclNpbmdsZVByb3AocCkgfHwgaXNWZWN0b3JBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUc1ZlY3RvclByb3AocDogdW5rbm93bik6IHAgaXMgVHNWZWN0b3JQcm9wIHtcbiAgcmV0dXJuIChwIGFzIFRzVmVjdG9yUHJvcCk/LnR5cGUgPT09IFwidHN2ZWN0b3JcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbGF0aW9uUHJvcChwOiB1bmtub3duKTogcCBpcyBSZWxhdGlvblByb3Age1xuICByZXR1cm4gKHAgYXMgUmVsYXRpb25Qcm9wKT8udHlwZSA9PT0gXCJyZWxhdGlvblwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzT25lVG9PbmVSZWxhdGlvblByb3AocDogdW5rbm93bik6IHAgaXMgT25lVG9PbmVSZWxhdGlvblByb3Age1xuICByZXR1cm4gKHAgYXMgT25lVG9PbmVSZWxhdGlvblByb3ApPy5yZWxhdGlvblR5cGUgPT09IFwiT25lVG9PbmVcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcChwOiB1bmtub3duKTogcCBpcyBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3Age1xuICByZXR1cm4gKHAgYXMgQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wKT8ucmVsYXRpb25UeXBlID09PSBcIkJlbG9uZ3NUb09uZVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSGFzTWFueVJlbGF0aW9uUHJvcChwOiB1bmtub3duKTogcCBpcyBIYXNNYW55UmVsYXRpb25Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIEhhc01hbnlSZWxhdGlvblByb3ApPy5yZWxhdGlvblR5cGUgPT09IFwiSGFzTWFueVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcChwOiB1bmtub3duKTogcCBpcyBNYW55VG9NYW55UmVsYXRpb25Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIE1hbnlUb01hbnlSZWxhdGlvblByb3ApPy5yZWxhdGlvblR5cGUgPT09IFwiTWFueVRvTWFueVwiO1xufVxuXG50eXBlIEpvaW5DbGF1c2UgPVxuICB8IHtcbiAgICAgIGZyb206IHN0cmluZztcbiAgICAgIHRvOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIGN1c3RvbTogc3RyaW5nO1xuICAgIH07XG5leHBvcnQgZnVuY3Rpb24gaXNDdXN0b21Kb2luQ2xhdXNlKHA6IHVua25vd24pOiBwIGlzIHsgY3VzdG9tOiBzdHJpbmcgfSB7XG4gIHJldHVybiAhIShwIGFzIHsgY3VzdG9tOiBzdHJpbmcgfSk/LmN1c3RvbTtcbn1cblxudHlwZSBTdWJzZXRMb2FkZXIgPSB7XG4gIGFzOiBzdHJpbmc7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIG1hbnlKb2luOiB7XG4gICAgZnJvbVRhYmxlOiBzdHJpbmc7XG4gICAgZnJvbUNvbDogc3RyaW5nO1xuICAgIGlkRmllbGQ6IHN0cmluZztcbiAgICB0b1RhYmxlOiBzdHJpbmc7XG4gICAgdG9Db2w6IHN0cmluZztcbiAgICB0aHJvdWdoPzoge1xuICAgICAgdGFibGU6IHN0cmluZztcbiAgICAgIGZyb21Db2w6IHN0cmluZztcbiAgICAgIHRvQ29sOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgb25lSm9pbnM6ICh7XG4gICAgYXM6IHN0cmluZztcbiAgICBqb2luOiBcImlubmVyXCIgfCBcIm91dGVyXCI7XG4gICAgdGFibGU6IHN0cmluZztcbiAgfSAmIEpvaW5DbGF1c2UpW107XG4gIHNlbGVjdDogc3RyaW5nW107XG4gIGxvYWRlcnM/OiBTdWJzZXRMb2FkZXJbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFN1YnNldFF1ZXJ5ID0ge1xuICBzZWxlY3Q6IHN0cmluZ1tdO1xuICB2aXJ0dWFsOiBzdHJpbmdbXTtcbiAgam9pbnM6ICh7XG4gICAgYXM6IHN0cmluZztcbiAgICBqb2luOiBcImlubmVyXCIgfCBcIm91dGVyXCI7XG4gICAgdGFibGU6IHN0cmluZztcbiAgfSAmIEpvaW5DbGF1c2UpW107XG4gIGxvYWRlcnM6IFN1YnNldExvYWRlcltdO1xufTtcblxuLyogQmFzZU1vZGVsICovXG5leHBvcnQgY29uc3QgU29uYW11UXVlcnlNb2RlID0gei5lbnVtKFtcImJvdGhcIiwgXCJsaXN0XCIsIFwiY291bnRcIl0pO1xuZXhwb3J0IHR5cGUgU29uYW11UXVlcnlNb2RlID0gei5pbmZlcjx0eXBlb2YgU29uYW11UXVlcnlNb2RlPjtcblxuLyogU2VtYW50aWMgUXVlcnkgKi9cbmV4cG9ydCBjb25zdCBTb25hbXVTZW1hbnRpY1BhcmFtcyA9IHoub2JqZWN0KHtcbiAgc2VtYW50aWNRdWVyeTogei5vYmplY3Qoe1xuICAgIGVtYmVkZGluZzogei5hcnJheSh6Lm51bWJlcigpKS5taW4oMTAyNCkubWF4KDEwMjQpLFxuICAgIHRocmVzaG9sZDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIG1ldGhvZDogei5lbnVtKFtcImNvc2luZVwiLCBcImwyXCIsIFwiaW5uZXJfcHJvZHVjdFwiXSkub3B0aW9uYWwoKSxcbiAgfSksXG59KTtcbmV4cG9ydCB0eXBlIFNvbmFtdVNlbWFudGljUGFyYW1zID0gei5pbmZlcjx0eXBlb2YgU29uYW11U2VtYW50aWNQYXJhbXM+O1xuXG4vKiBLbmV4IE1pZ3JhdGlvbiAqL1xuZXhwb3J0IHR5cGUgS25leEVycm9yID0ge1xuICBjb2RlOiBzdHJpbmc7XG4gIGVycm5vOiBudW1iZXI7XG4gIHNxbDogc3RyaW5nO1xuICBzcWxNZXNzYWdlOiBzdHJpbmc7XG4gIHNxbFN0YXRlOiBzdHJpbmc7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGlzS25leEVycm9yKGU6IHVua25vd24pOiBlIGlzIEtuZXhFcnJvciB7XG4gIHJldHVybiAhIShlIGFzIEtuZXhFcnJvcik/LmNvZGUgJiYgISEoZSBhcyBLbmV4RXJyb3IpPy5zcWxNZXNzYWdlICYmICEhKGUgYXMgS25leEVycm9yKT8uc3FsU3RhdGU7XG59XG5cbmV4cG9ydCB0eXBlIEtuZXhDb2x1bW5UeXBlID1cbiAgfCBcInN0cmluZ1wiXG4gIHwgXCJ0ZXh0XCJcbiAgfCBcInNtYWxsdGV4dFwiXG4gIHwgXCJtZWRpdW10ZXh0XCJcbiAgfCBcImxvbmd0ZXh0XCJcbiAgfCBcImludGVnZXJcIlxuICB8IFwiYmlnSW50ZWdlclwiXG4gIHwgXCJkZWNpbWFsXCJcbiAgfCBcInRpbWVzdGFtcFwiXG4gIHwgXCJib29sZWFuXCJcbiAgfCBcImZvcmVpZ25cIlxuICB8IFwidXVpZFwiXG4gIHwgXCJqc29uXCJcbiAgfCBcImZsb2F0XCJcbiAgfCBcImRhdGVcIlxuICB8IFwidGltZVwiXG4gIHwgXCJkYXRldGltZVwiO1xuZXhwb3J0IHR5cGUgTWlncmF0aW9uQ29sdW1uVHlwZSA9XG4gIHwgXCJzdHJpbmdcIlxuICB8IFwic3RyaW5nW11cIlxuICB8IFwiaW50ZWdlclwiXG4gIHwgXCJpbnRlZ2VyW11cIlxuICB8IFwiYmlnSW50ZWdlclwiXG4gIHwgXCJiaWdJbnRlZ2VyW11cIlxuICB8IFwibnVtYmVyT3JOdW1lcmljXCJcbiAgfCBcIm51bWJlck9yTnVtZXJpY1tdXCJcbiAgfCBcImJvb2xlYW5cIlxuICB8IFwiYm9vbGVhbltdXCJcbiAgfCBcImRhdGVcIlxuICB8IFwiZGF0ZVtdXCJcbiAgfCBcInV1aWRcIlxuICB8IFwidXVpZFtdXCJcbiAgfCBcImpzb25cIlxuICB8IFwidmVjdG9yXCJcbiAgfCBcInZlY3RvcltdXCJcbiAgfCBcInRzdmVjdG9yXCI7XG5leHBvcnQgdHlwZSBNaWdyYXRpb25Db2x1bW4gPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogTWlncmF0aW9uQ29sdW1uVHlwZTtcbiAgbnVsbGFibGU6IGJvb2xlYW47XG4gIG51bWJlclR5cGU/OiBcInJlYWxcIiB8IFwiZG91YmxlIHByZWNpc2lvblwiIHwgXCJudW1lcmljXCI7XG4gIGxlbmd0aD86IG51bWJlcjtcbiAgZGVmYXVsdFRvPzogc3RyaW5nO1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIHNjYWxlPzogbnVtYmVyO1xuICBkaW1lbnNpb25zPzogbnVtYmVyO1xuICBnZW5lcmF0ZWQ/OiBHZW5lcmF0ZWRDb2x1bW47XG59O1xuZXhwb3J0IHR5cGUgTWlncmF0aW9uSW5kZXggPSB7XG4gIHR5cGU6IFwidW5pcXVlXCIgfCBcImluZGV4XCIgfCBcImhuc3dcIiB8IFwiaXZmZmxhdFwiO1xuICBjb2x1bW5zOiBFbnRpdHlJbmRleENvbHVtbltdO1xuICBuYW1lOiBzdHJpbmc7XG4gIHVzaW5nPzogXCJidHJlZVwiIHwgXCJoYXNoXCIgfCBcImdpblwiIHwgXCJnaXN0XCIgfCBcInBncm9vbmdhXCI7XG4gIG51bGxzTm90RGlzdGluY3Q/OiBib29sZWFuO1xuICAvKiogSE5TVyAoSGllcmFyY2hpY2FsIE5hdmlnYWJsZSBTbWFsbCBXb3JsZCk6IOqwgSDrhbjrk5zsnZgg7LWc64yAIOyXsOqysCDsiJggKi9cbiAgbT86IG51bWJlcjtcbiAgLyoqIEhOU1cgKEhpZXJhcmNoaWNhbCBOYXZpZ2FibGUgU21hbGwgV29ybGQpOiDqtazshLEg7IucIO2DkOyDiSDrspTsnIQgKi9cbiAgZWZDb25zdHJ1Y3Rpb24/OiBudW1iZXI7XG4gIC8qKiBJVkZGbGF0IChJbnZlcnRlZCBGaWxlIHdpdGggRmxhdCBDb21wcmVzc2lvbik6IO2BtOufrOyKpO2EsOungSDrpqzsiqTtirgg7IiYICovXG4gIGxpc3RzPzogbnVtYmVyO1xufTtcbmV4cG9ydCB0eXBlIE1pZ3JhdGlvbkZvcmVpZ24gPSB7XG4gIGNvbHVtbnM6IHN0cmluZ1tdO1xuICB0bzogc3RyaW5nO1xuICBvblVwZGF0ZTogUmVsYXRpb25PbjtcbiAgb25EZWxldGU6IFJlbGF0aW9uT247XG59O1xuZXhwb3J0IHR5cGUgTWlncmF0aW9uSm9pblRhYmxlID0ge1xuICB0YWJsZTogc3RyaW5nO1xuICBpbmRleGVzOiBNaWdyYXRpb25JbmRleFtdO1xuICBjb2x1bW5zOiBNaWdyYXRpb25Db2x1bW5bXTtcbiAgZm9yZWlnbnM6IE1pZ3JhdGlvbkZvcmVpZ25bXTtcbn07XG5leHBvcnQgdHlwZSBNaWdyYXRpb25TZXQgPSB7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIGNvbHVtbnM6IE1pZ3JhdGlvbkNvbHVtbltdO1xuICBpbmRleGVzOiBNaWdyYXRpb25JbmRleFtdO1xuICBmb3JlaWduczogTWlncmF0aW9uRm9yZWlnbltdO1xufTtcbmV4cG9ydCB0eXBlIE1pZ3JhdGlvblNldEFuZEpvaW5UYWJsZSA9IE1pZ3JhdGlvblNldCAmIHtcbiAgam9pblRhYmxlczogTWlncmF0aW9uSm9pblRhYmxlW107XG59O1xuZXhwb3J0IHR5cGUgR2VuTWlncmF0aW9uQ29kZSA9IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgdHlwZTogXCJub3JtYWxcIiB8IFwiZm9yZWlnblwiO1xuICBmb3JtYXR0ZWQ6IHN0cmluZyB8IG51bGw7XG59O1xuXG4vKiBBcGkgKi9cbmV4cG9ydCB0eXBlIEFwaVBhcmFtID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IEFwaVBhcmFtVHlwZTtcbiAgb3B0aW9uYWw6IGJvb2xlYW47XG4gIGRlZmF1bHREZWY/OiBzdHJpbmc7XG59O1xuZXhwb3J0IG5hbWVzcGFjZSBBcGlQYXJhbVR5cGUge1xuICBleHBvcnQgdHlwZSBGdW5jdGlvbiA9IHtcbiAgICB0OiBcImZ1bmN0aW9uXCI7XG4gICAgcGFyYW1ldGVyczogQXBpUGFyYW1bXTtcbiAgICByZXR1cm5UeXBlOiBBcGlQYXJhbVR5cGU7XG4gIH07XG4gIGV4cG9ydCB0eXBlIE9iamVjdCA9IHtcbiAgICB0OiBcIm9iamVjdFwiO1xuICAgIHByb3BzOiBBcGlQYXJhbVtdO1xuICB9O1xuICBleHBvcnQgdHlwZSBVbmlvbiA9IHtcbiAgICB0OiBcInVuaW9uXCI7XG4gICAgdHlwZXM6IEFwaVBhcmFtVHlwZVtdO1xuICB9O1xuICBleHBvcnQgdHlwZSBJbnRlcnNlY3Rpb24gPSB7XG4gICAgdDogXCJpbnRlcnNlY3Rpb25cIjtcbiAgICB0eXBlczogQXBpUGFyYW1UeXBlW107XG4gIH07XG4gIGV4cG9ydCB0eXBlIFN0cmluZ0xpdGVyYWwgPSB7XG4gICAgdDogXCJzdHJpbmctbGl0ZXJhbFwiO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGV4cG9ydCB0eXBlIE51bWVyaWNMaXRlcmFsID0ge1xuICAgIHQ6IFwibnVtZXJpYy1saXRlcmFsXCI7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgQXJyYXkgPSB7XG4gICAgdDogXCJhcnJheVwiO1xuICAgIGVsZW1lbnRzVHlwZTogQXBpUGFyYW1UeXBlO1xuICB9O1xuICBleHBvcnQgdHlwZSBSZWYgPSB7XG4gICAgdDogXCJyZWZcIjtcbiAgICBpZDogc3RyaW5nO1xuICAgIGFyZ3M/OiBBcGlQYXJhbVR5cGVbXTtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgSW5kZXhlZEFjY2VzcyA9IHtcbiAgICB0OiBcImluZGV4ZWQtYWNjZXNzXCI7XG4gICAgb2JqZWN0OiBBcGlQYXJhbVR5cGU7XG4gICAgaW5kZXg6IEFwaVBhcmFtVHlwZTtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgVHVwbGVUeXBlID0ge1xuICAgIHQ6IFwidHVwbGUtdHlwZVwiO1xuICAgIGVsZW1lbnRzOiBBcGlQYXJhbVR5cGVbXTtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgUGljayA9IFJlZiAmIHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBcIlBpY2tcIjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgT21pdCA9IFJlZiAmIHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBcIk9taXRcIjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgUGFydGlhbCA9IFJlZiAmIHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBcIlBhcnRpYWxcIjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgUHJvbWlzZSA9IFJlZiAmIHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBcIlByb21pc2VcIjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgQ29udGV4dCA9IFJlZiAmIHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBcIkNvbnRleHRcIjtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgVHlwZVBhcmFtID0ge1xuICAgIHQ6IFwidHlwZS1wYXJhbVwiO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29uc3RyYWludD86IEFwaVBhcmFtVHlwZTtcbiAgfTtcblxuICBleHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLk9iamVjdCB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5PYmplY3QpPy50ID09PSBcIm9iamVjdFwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1VuaW9uKHY6IHVua25vd24pOiB2IGlzIEFwaVBhcmFtVHlwZS5VbmlvbiB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5Vbmlvbik/LnQgPT09IFwidW5pb25cIjtcbiAgfVxuICBleHBvcnQgZnVuY3Rpb24gaXNJbnRlcnNlY3Rpb24odjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLkludGVyc2VjdGlvbiB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5JbnRlcnNlY3Rpb24pPy50ID09PSBcImludGVyc2VjdGlvblwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ0xpdGVyYWwodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlN0cmluZ0xpdGVyYWwge1xuICAgIHJldHVybiAodiBhcyBBcGlQYXJhbVR5cGUuU3RyaW5nTGl0ZXJhbCk/LnQgPT09IFwic3RyaW5nLWxpdGVyYWxcIjtcbiAgfVxuICBleHBvcnQgZnVuY3Rpb24gaXNOdW1lcmljTGl0ZXJhbCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuTnVtZXJpY0xpdGVyYWwge1xuICAgIHJldHVybiAodiBhcyBBcGlQYXJhbVR5cGUuTnVtZXJpY0xpdGVyYWwpPy50ID09PSBcIm51bWVyaWMtbGl0ZXJhbFwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc0FycmF5KHY6IHVua25vd24pOiB2IGlzIEFwaVBhcmFtVHlwZS5BcnJheSB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5BcnJheSk/LnQgPT09IFwiYXJyYXlcIjtcbiAgfVxuICBleHBvcnQgZnVuY3Rpb24gaXNSZWYodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlJlZiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT09IG51bGwgJiYgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc0luZGV4ZWRBY2Nlc3ModjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLkluZGV4ZWRBY2Nlc3Mge1xuICAgIHJldHVybiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9PSBudWxsICYmICh2IGFzIHsgdD86IHVua25vd24gfSkudCA9PT0gXCJpbmRleGVkLWFjY2Vzc1wiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1R1cGxlVHlwZSh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuVHVwbGVUeXBlIHtcbiAgICByZXR1cm4gdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAhPT0gbnVsbCAmJiAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwidHVwbGUtdHlwZVwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1BpY2sodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlBpY2sge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiICYmXG4gICAgICAodiBhcyB7IGlkPzogdW5rbm93biB9KS5pZCA9PT0gXCJQaWNrXCJcbiAgICApO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc09taXQodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLk9taXQge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiICYmXG4gICAgICAodiBhcyB7IGlkPzogdW5rbm93biB9KS5pZCA9PT0gXCJPbWl0XCJcbiAgICApO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1BhcnRpYWwodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlBhcnRpYWwge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiICYmXG4gICAgICAodiBhcyB7IGlkPzogdW5rbm93biB9KS5pZCA9PT0gXCJQYXJ0aWFsXCJcbiAgICApO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlByb21pc2Uge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiICYmXG4gICAgICAodiBhcyB7IGlkPzogdW5rbm93biB9KS5pZCA9PT0gXCJQcm9taXNlXCJcbiAgICApO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc0NvbnRleHQodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLkNvbnRleHQge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdiAhPT0gbnVsbCAmJlxuICAgICAgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInJlZlwiICYmXG4gICAgICAoKHYgYXMgeyBpZD86IHVua25vd24gfSkuaWQgPT09IFwiQ29udGV4dFwiIHx8XG4gICAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIldlYlNvY2tldENvbnRleHRcIilcbiAgICApO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1JlZktuZXgodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlJlZiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIktuZXhcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZVBhcmFtKHY6IHVua25vd24pOiB2IGlzIEFwaVBhcmFtVHlwZS5UeXBlUGFyYW0ge1xuICAgIHJldHVybiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9PSBudWxsICYmICh2IGFzIHsgdD86IHVua25vd24gfSkudCA9PT0gXCJ0eXBlLXBhcmFtXCI7XG4gIH1cbn1cbmV4cG9ydCB0eXBlIEFwaVBhcmFtVHlwZSA9XG4gIHwgXCJzdHJpbmdcIlxuICB8IFwibnVtYmVyXCJcbiAgfCBcImJvb2xlYW5cIlxuICB8IFwibnVsbFwiXG4gIHwgXCJ1bmRlZmluZWRcIlxuICB8IFwidm9pZFwiXG4gIHwgXCJhbnlcIlxuICB8IFwidW5rbm93blwiXG4gIHwgXCJ0cnVlXCJcbiAgfCBcImZhbHNlXCJcbiAgfCBBcGlQYXJhbVR5cGUuU3RyaW5nTGl0ZXJhbFxuICB8IEFwaVBhcmFtVHlwZS5OdW1lcmljTGl0ZXJhbFxuICB8IEFwaVBhcmFtVHlwZS5PYmplY3RcbiAgfCBBcGlQYXJhbVR5cGUuVW5pb25cbiAgfCBBcGlQYXJhbVR5cGUuSW50ZXJzZWN0aW9uXG4gIHwgQXBpUGFyYW1UeXBlLkFycmF5XG4gIHwgQXBpUGFyYW1UeXBlLlJlZlxuICB8IEFwaVBhcmFtVHlwZS5JbmRleGVkQWNjZXNzXG4gIHwgQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVxuICB8IEFwaVBhcmFtVHlwZS5UdXBsZVR5cGVcbiAgfCBBcGlQYXJhbVR5cGUuRnVuY3Rpb247XG5cbi8qIFRlbXBsYXRlICovXG4vKipcbiAqIFVJIOy7tO2PrOuEjO2KuCDroIzrjZTrp4HsnYQg7JyE7ZWcIOuplO2DgOuNsOydtO2EsCDrhbjrk5zsnoXri4jri6QuXG4gKlxuICogKirrqqnsoIEqKjogWm9kIOyKpO2CpOuniOuhnOu2gO2EsCDtlITroaDtirjsl5Trk5wgVUkg7Lu07Y+s64SM7Yq466W8IOyekOuPmSDsg53shLHtlZjquLAg7JyE7ZWcXG4gKiDroIzrjZTrp4Eg7KCV67O066W8IOuLtOydgCDtirjrpqwg6rWs7KGw7J6F64uI64ukLiDqsIEg7ZWE65Oc6rCAIOyWtOuWpCBVSSDsu7Ttj6zrhIztirjroZxcbiAqIO2RnO2YhOuQmOyWtOyVvCDtlZjripTsp4Ao7YWN7Iqk7Yq4LCDsnbTrr7jsp4AsIOuCoOynnCwgRW51bSDshKDtg50g65OxKeulvCDrqoXsi5ztlanri4jri6QuXG4gKlxuICogKirrs4DtmZgg7Z2Q66aEKio6XG4gKiBFbnRpdHkgc3Vic2V0IOKGkiBFbnRpdHlQcm9wTm9kZSDihpIgWm9kIOyKpO2CpOuniCDihpIgUmVuZGVyaW5nTm9kZSAoVUnsmqkpIOKGkiBSZWFjdCDsu7Ttj6zrhIztirgg7L2U65OcIOyDneyEsVxuICpcbiAqICoq7KO87JqUIO2VhOuTnCoqOlxuICogLSBgcmVuZGVyVHlwZWA6IFVJIOy7tO2PrOuEjO2KuCDsnKDtmJUgKHN0cmluZy1wbGFpbiwgbnVtYmVyLWZrX2lkLCBlbnVtcywgYXJyYXkg65OxKVxuICogLSBgem9kVHlwZWA6IOybkOuzuCBab2Qg7Iqk7YKk66eIICh2YWxpZGF0aW9uIOyaqSlcbiAqIC0gYGNoaWxkcmVuYDog7KSR7LKp65CcIOqwneyytCDtlYTrk5zrk6QgKG9iamVjdOydvCDrlYwpXG4gKiAtIGBlbGVtZW50YDog67Cw7Je0IOyalOyGjCDtg4DsnoUgKGFycmF57J28IOuVjClcbiAqXG4gKiAqKuyCrOyaqSDsnITsuZgqKjpcbiAqIC0gem9kLWNvbnZlcnRlci50c+ydmCB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlKCnsl5DshJwg7IOd7ISxXG4gKiAtIHZpZXdfZm9ybS50ZW1wbGF0ZS50cywgdmlld19saXN0LnRlbXBsYXRlLnRzIOuTseyXkOyEnCBSZWFjdCDsu7Ttj6zrhIztirgg7L2U65OcIOyDneyEseyXkCDsgqzsmqlcbiAqL1xuLy8g7IWA7ZSEIOywuOyhsCDtg4DsnoXsnbTrr4DroZwgWm9kIOyDneuete2VmOqzoCDsp4HsoJEg7KCV7J2YXG5leHBvcnQgY29uc3QgUmVuZGVyaW5nTm9kZSA9IHouYW55KCk7XG5leHBvcnQgdHlwZSBSZW5kZXJpbmdOb2RlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHJlbmRlclR5cGU6XG4gICAgfCBcInN0cmluZy1wbGFpblwiXG4gICAgfCBcInN0cmluZy1pbWFnZVwiXG4gICAgfCBcInN0cmluZy1kYXRldGltZVwiXG4gICAgfCBcInN0cmluZy1kYXRlXCJcbiAgICB8IFwic3RyaW5nLWlkXCJcbiAgICB8IFwic3RyaW5nLWZrX2lkXCJcbiAgICB8IFwiZGF0ZXRpbWVcIlxuICAgIHwgXCJudW1iZXItcGxhaW5cIlxuICAgIHwgXCJudW1iZXItaWRcIlxuICAgIHwgXCJudW1iZXItZmtfaWRcIlxuICAgIHwgXCJib29sZWFuXCJcbiAgICB8IFwiZW51bXNcIlxuICAgIHwgXCJhcnJheVwiXG4gICAgfCBcImFycmF5LWltYWdlc1wiXG4gICAgfCBcImpzb24tc29uYW11ZmlsZVwiXG4gICAgfCBcImpzb24tc29uYW11ZmlsZS1hcnJheVwiXG4gICAgfCBcIm9iamVjdFwiXG4gICAgfCBcIm9iamVjdC1waWNrXCJcbiAgICB8IFwicmVjb3JkXCJcbiAgICB8IFwidmVjdG9yXCI7XG4gIHpvZFR5cGU6IHouWm9kVHlwZUFueTtcbiAgZWxlbWVudD86IFJlbmRlcmluZ05vZGU7XG4gIGNoaWxkcmVuPzogUmVuZGVyaW5nTm9kZVtdO1xuICBjb25maWc/OiB7XG4gICAgcGlja2VkOiBzdHJpbmc7XG4gIH07XG4gIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgbnVsbGFibGU/OiBib29sZWFuO1xufTtcblxuY29uc3QgR2VuZXJhdGVkQ29sdW1uU2NoZW1hID0gei5vYmplY3Qoe1xuICB0eXBlOiB6LmVudW0oW1wiU1RPUkVEXCIsIFwiVklSVFVBTFwiXSksXG4gIGV4cHJlc3Npb246IHouc3RyaW5nKCksXG59KTtcblxuY29uc3QgRml4dHVyZUNvbXBhbmlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZW50aXR5OiB6LnN0cmluZygpLFxuICBvdmVycmlkZXM6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICBjb3VudDogei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCksXG59KTtcblxuLyoqXG4gKiBDb25lIOyKpO2CpOuniCDqsoDspp1cbiAqXG4gKiBjb25lIOuplO2DgOuNsOydtO2EsOydmCDsnKDtmqjshLHsnYQg6rKA7Kad7ZWp64uI64ukLlxuICovXG5jb25zdCBDb25lU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBub3RlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdGFnczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICAgIGZpeHR1cmVHZW5lcmF0b3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBmaXh0dXJlRGVmYXVsdDogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgICBmaXh0dXJlU3RyYXRlZ3k6IHoubGl0ZXJhbChcInNlcXVlbmNlXCIpLm9wdGlvbmFsKCksXG4gICAgZml4dHVyZUNvbXBhbmlvbnM6IHouYXJyYXkoRml4dHVyZUNvbXBhbmlvblNjaGVtYSkub3B0aW9uYWwoKSxcbiAgICBmaXh0dXJlUGFyZW50T3ZlcnJpZGVzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbiAgICBkYXRhU291cmNlOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgc3RyYXRlZ3k6IHouZW51bShbXCJzYW1wbGVcIiwgXCJpZHNcIiwgXCJxdWVyeVwiLCBcImZpbGVcIiwgXCJyZWNlbnRcIiwgXCJyYW5kb21cIl0pLFxuICAgICAgICBjb25maWc6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gICAgICB9KVxuICAgICAgLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5jYXRjaGFsbCh6LnVua25vd24oKSk7IC8vIOyCrOyaqeyekCDsoJXsnZgg66mU7YOA642w7J207YSwIO2XiOyaqVxuXG5jb25zdCBCYXNlUHJvcEZpZWxkcyA9IHtcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgZGVzYzogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBudWxsYWJsZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdG9GaWx0ZXI6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLm9wdGlvbmFsKCksXG4gIGRiRGVmYXVsdDogei51bmlvbihbei5zdHJpbmcoKSwgei5udW1iZXIoKSwgei5ib29sZWFuKCldKS5vcHRpb25hbCgpLFxuICBnZW5lcmF0ZWQ6IEdlbmVyYXRlZENvbHVtblNjaGVtYS5vcHRpb25hbCgpLFxuICBjb25lOiBDb25lU2NoZW1hLm9wdGlvbmFsKCksXG59O1xuXG4vLyDrtoDqsIAg7ZWE65Oc6rCAIO2VhOyalOyXhuuKlCBwcm9wXG5jb25zdCBCYXNlUHJvcEZpZWxkc1dpdGhvdXRBZGRpdGlvbmFsID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LnVuaW9uKFtcbiAgICAgIHoubGl0ZXJhbChcImludGVnZXJcIiksXG4gICAgICB6LmxpdGVyYWwoXCJpbnRlZ2VyW11cIiksXG4gICAgICB6LmxpdGVyYWwoXCJiaWdJbnRlZ2VyXCIpLFxuICAgICAgei5saXRlcmFsKFwiYmlnSW50ZWdlcltdXCIpLFxuICAgICAgei5saXRlcmFsKFwiYm9vbGVhblwiKSxcbiAgICAgIHoubGl0ZXJhbChcImJvb2xlYW5bXVwiKSxcbiAgICAgIHoubGl0ZXJhbChcInV1aWRcIiksXG4gICAgICB6LmxpdGVyYWwoXCJ1dWlkW11cIiksXG4gICAgICB6LmxpdGVyYWwoXCJ0c3ZlY3RvclwiKSxcbiAgICBdKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG4vLyBwcmVjaXNpb24vc2NhbGUg7ZWE65OcXG5jb25zdCBQcmVjaXNpb25TY2FsZUZpZWxkcyA9IHtcbiAgcHJlY2lzaW9uOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHNjYWxlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG59O1xuXG4vLyDqsIEg7YOA7J6F67OEIOyKpO2CpOuniCDsoJXsnZhcblxuY29uc3QgU3RyaW5nUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwic3RyaW5nXCIpLFxuICAgIGxlbmd0aDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIHpvZEZvcm1hdDogWm9kU3RyaW5nRm9ybWF0Lm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcbmNvbnN0IFN0cmluZ0FycmF5UHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwic3RyaW5nW11cIiksXG4gICAgbGVuZ3RoOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgem9kRm9ybWF0OiBab2RTdHJpbmdGb3JtYXQub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBFbnVtUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwiZW51bVwiKSxcbiAgICBpZDogei5zdHJpbmcoKSxcbiAgICBsZW5ndGg6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuY29uc3QgRW51bUFycmF5UHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwiZW51bVtdXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IE51bWJlclByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcIm51bWJlclwiKSxcbiAgICAuLi5QcmVjaXNpb25TY2FsZUZpZWxkcyxcbiAgICBudW1iZXJUeXBlOiB6LmVudW0oW1wicmVhbFwiLCBcImRvdWJsZSBwcmVjaXNpb25cIiwgXCJudW1lcmljXCJdKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5jb25zdCBOdW1iZXJBcnJheVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcIm51bWJlcltdXCIpLFxuICAgIC4uLlByZWNpc2lvblNjYWxlRmllbGRzLFxuICAgIG51bWJlclR5cGU6IHouZW51bShbXCJyZWFsXCIsIFwiZG91YmxlIHByZWNpc2lvblwiLCBcIm51bWVyaWNcIl0pLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgRGF0ZVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcImRhdGVcIiksXG4gICAgcHJlY2lzaW9uOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcbmNvbnN0IERhdGVBcnJheVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcImRhdGVbXVwiKSxcbiAgICBwcmVjaXNpb246IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBOdW1lcmljUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwibnVtZXJpY1wiKSxcbiAgICAuLi5QcmVjaXNpb25TY2FsZUZpZWxkcyxcbiAgfSlcbiAgLnN0cmljdCgpO1xuY29uc3QgTnVtZXJpY0FycmF5UHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwibnVtZXJpY1tdXCIpLFxuICAgIC4uLlByZWNpc2lvblNjYWxlRmllbGRzLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IEpzb25Qcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJqc29uXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IFNlYXJjaFRleHRTb3VyY2VDb2x1bW5TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgY2FzZUluc2Vuc2l0aXZlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IFNlYXJjaFRleHRQcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJzZWFyY2hUZXh0XCIpLFxuICAgIHNvdXJjZUNvbHVtbnM6IHouYXJyYXkoU2VhcmNoVGV4dFNvdXJjZUNvbHVtblNjaGVtYSkubWluKDEpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IFZpcnR1YWxQcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJ2aXJ0dWFsXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICAgIHZpcnR1YWxUeXBlOiB6LmVudW0oW1wicXVlcnlcIiwgXCJjb2RlXCJdKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IFZlY3RvclByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcInZlY3RvclwiKSxcbiAgICBkaW1lbnNpb25zOiB6Lm51bWJlcigpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5jb25zdCBWZWN0b3JBcnJheVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcInZlY3RvcltdXCIpLFxuICAgIGRpbWVuc2lvbnM6IHoubnVtYmVyKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuLy8gUmVsYXRpb24g7YOA7J6F7J2AIHJlbGF0aW9uVHlwZeyXkCDrlLDrnbwg7IS467aE7ZmUXG5jb25zdCBCYXNlUmVsYXRpb25GaWVsZHMgPSB7XG4gIC4uLkJhc2VQcm9wRmllbGRzLFxuICB0eXBlOiB6LmxpdGVyYWwoXCJyZWxhdGlvblwiKSxcbiAgd2l0aDogei5zdHJpbmcoKSxcbn07XG5cbi8vIFJlbGF0aW9uT24g7YOA7J6FXG5jb25zdCBSZWxhdGlvbk9uU2NoZW1hID0gei5lbnVtKFtcIkNBU0NBREVcIiwgXCJTRVQgTlVMTFwiLCBcIk5PIEFDVElPTlwiLCBcIlNFVCBERUZBVUxUXCIsIFwiUkVTVFJJQ1RcIl0pO1xuXG5jb25zdCBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VSZWxhdGlvbkZpZWxkcyxcbiAgICByZWxhdGlvblR5cGU6IHoubGl0ZXJhbChcIkJlbG9uZ3NUb09uZVwiKSxcbiAgICBjdXN0b21Kb2luQ2xhdXNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdXNlQ29uc3RyYWludDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBvblVwZGF0ZTogUmVsYXRpb25PblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIG9uRGVsZXRlOiBSZWxhdGlvbk9uU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgSGFzTWFueVJlbGF0aW9uUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVJlbGF0aW9uRmllbGRzLFxuICAgIHJlbGF0aW9uVHlwZTogei5saXRlcmFsKFwiSGFzTWFueVwiKSxcbiAgICBqb2luQ29sdW1uOiB6LnN0cmluZygpLFxuICAgIGZyb21Db2x1bW46IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBNYW55VG9NYW55UmVsYXRpb25Qcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUmVsYXRpb25GaWVsZHMsXG4gICAgcmVsYXRpb25UeXBlOiB6LmxpdGVyYWwoXCJNYW55VG9NYW55XCIpLFxuICAgIGpvaW5UYWJsZTogei5zdHJpbmcoKSxcbiAgICBvblVwZGF0ZTogUmVsYXRpb25PblNjaGVtYSxcbiAgICBvbkRlbGV0ZTogUmVsYXRpb25PblNjaGVtYSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBPbmVUb09uZVJlbGF0aW9uUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVJlbGF0aW9uRmllbGRzLFxuICAgIHJlbGF0aW9uVHlwZTogei5saXRlcmFsKFwiT25lVG9PbmVcIiksXG4gICAgY3VzdG9tSm9pbkNsYXVzZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGhhc0pvaW5Db2x1bW46IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgdXNlQ29uc3RyYWludDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBvblVwZGF0ZTogUmVsYXRpb25PblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIG9uRGVsZXRlOiBSZWxhdGlvbk9uU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgUmVsYXRpb25UeXBlcyA9IFtcIkJlbG9uZ3NUb09uZVwiLCBcIkhhc01hbnlcIiwgXCJNYW55VG9NYW55XCIsIFwiT25lVG9PbmVcIl0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgUmVsYXRpb25Qcm9wU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXG4gIFwicmVsYXRpb25UeXBlXCIsXG4gIFtcbiAgICBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BTY2hlbWEsXG4gICAgSGFzTWFueVJlbGF0aW9uUHJvcFNjaGVtYSxcbiAgICBNYW55VG9NYW55UmVsYXRpb25Qcm9wU2NoZW1hLFxuICAgIE9uZVRvT25lUmVsYXRpb25Qcm9wU2NoZW1hLFxuICBdLFxuICB7XG4gICAgZXJyb3I6IChpc3MpID0+XG4gICAgICBgcmVsYXRpb25UeXBl7J2AICR7UmVsYXRpb25UeXBlcy5tYXAoKHQpID0+IGAnJHt0fSdgKS5qb2luKFwiLCBcIil9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukLiDsnoXroKXqsJI6IFwiJHsoaXNzLmlucHV0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ucmVsYXRpb25UeXBlfVwiYCxcbiAgfSxcbik7XG5cbmNvbnN0IE5vcm1hbFByb3BUeXBlcyA9IFtcbiAgXCJpbnRlZ2VyXCIsXG4gIFwiaW50ZWdlcltdXCIsXG4gIFwiYmlnSW50ZWdlclwiLFxuICBcImJpZ0ludGVnZXJbXVwiLFxuICBcInN0cmluZ1wiLFxuICBcInN0cmluZ1tdXCIsXG4gIFwiZW51bVwiLFxuICBcImVudW1bXVwiLFxuICBcIm51bWJlclwiLFxuICBcIm51bWJlcltdXCIsXG4gIFwibnVtZXJpY1wiLFxuICBcIm51bWVyaWNbXVwiLFxuICBcImJvb2xlYW5cIixcbiAgXCJib29sZWFuW11cIixcbiAgXCJkYXRlXCIsXG4gIFwiZGF0ZVtdXCIsXG4gIFwidXVpZFwiLFxuICBcInV1aWRbXVwiLFxuICBcImpzb25cIixcbiAgXCJzZWFyY2hUZXh0XCIsXG4gIFwidmlydHVhbFwiLFxuICBcInZlY3RvclwiLFxuICBcInZlY3RvcltdXCIsXG4gIFwidHN2ZWN0b3JcIixcbl0gYXMgY29uc3Q7XG5cbi8vIFZJUlRVQUwgR2VuZXJhdGVkIENvbHVtbuyXkOyEnCDsgqzsmqkg67aI6rCA64ql7ZWcIO2DgOyeheuTpFxuY29uc3QgVmlydHVhbEdlbmVyYXRlZERpc2FsbG93ZWRUeXBlcyA9IFtcbiAgXCJqc29uXCIsXG4gIFwidmVjdG9yXCIsXG4gIFwidmVjdG9yW11cIixcbiAgXCJzdHJpbmdbXVwiLFxuICBcImludGVnZXJbXVwiLFxuICBcImJpZ0ludGVnZXJbXVwiLFxuICBcImJvb2xlYW5bXVwiLFxuICBcImRhdGVbXVwiLFxuICBcInV1aWRbXVwiLFxuICBcIm51bWJlcltdXCIsXG4gIFwibnVtZXJpY1tdXCIsXG4gIFwiZW51bVtdXCIsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTm9ybWFsUHJvcFNjaGVtYSA9IHpcbiAgLmRpc2NyaW1pbmF0ZWRVbmlvbihcbiAgICBcInR5cGVcIixcbiAgICBbXG4gICAgICBCYXNlUHJvcEZpZWxkc1dpdGhvdXRBZGRpdGlvbmFsLFxuICAgICAgU3RyaW5nUHJvcFNjaGVtYSxcbiAgICAgIFN0cmluZ0FycmF5UHJvcFNjaGVtYSxcbiAgICAgIEVudW1Qcm9wU2NoZW1hLFxuICAgICAgRW51bUFycmF5UHJvcFNjaGVtYSxcbiAgICAgIE51bWJlclByb3BTY2hlbWEsXG4gICAgICBOdW1iZXJBcnJheVByb3BTY2hlbWEsXG4gICAgICBEYXRlUHJvcFNjaGVtYSxcbiAgICAgIERhdGVBcnJheVByb3BTY2hlbWEsXG4gICAgICBOdW1lcmljUHJvcFNjaGVtYSxcbiAgICAgIE51bWVyaWNBcnJheVByb3BTY2hlbWEsXG4gICAgICBKc29uUHJvcFNjaGVtYSxcbiAgICAgIFNlYXJjaFRleHRQcm9wU2NoZW1hLFxuICAgICAgVmlydHVhbFByb3BTY2hlbWEsXG4gICAgICBWZWN0b3JQcm9wU2NoZW1hLFxuICAgICAgVmVjdG9yQXJyYXlQcm9wU2NoZW1hLFxuICAgIF0sXG4gICAge1xuICAgICAgZXJyb3I6IChpc3MpID0+XG4gICAgICAgIGB0eXBl7J2AICR7Tm9ybWFsUHJvcFR5cGVzLm1hcCgodCkgPT4gYCcke3R9J2ApLmpvaW4oXCIsIFwiKX0g7KSRIO2VmOuCmOyXrOyVvCDtlanri4jri6QuIOyeheugpeqwkjogXCIkeyhpc3MuaW5wdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy50eXBlfVwiYCxcbiAgICB9LFxuICApXG4gIC5zdXBlclJlZmluZSgoZGF0YSwgY3R4KSA9PiB7XG4gICAgaWYgKCFkYXRhLmdlbmVyYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGRiRGVmYXVsdOyZgCBnZW5lcmF0ZWQg64+Z7IucIOyCrOyaqSDrtojqsIBcbiAgICBpZiAoZGF0YS5kYkRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgbWVzc2FnZTogXCJkYkRlZmF1bHTsmYAgZ2VuZXJhdGVk64qUIO2VqOq7mCDsgqzsmqntlaAg7IiYIOyXhuyKteuLiOuLpFwiLFxuICAgICAgICBwYXRoOiBbXCJnZW5lcmF0ZWRcIl0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyB2aXJ0dWFsIO2DgOyeheydgCBnZW5lcmF0ZWQg67aI6rCAXG4gICAgaWYgKGRhdGEudHlwZSA9PT0gXCJ2aXJ0dWFsXCIpIHtcbiAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwidmlydHVhbCDtg4DsnoXsnYAgZ2VuZXJhdGVkIGNvbHVtbuydhCDsp4Dsm5DtlZjsp4Ag7JWK7Iq164uI64ukXCIsXG4gICAgICAgIHBhdGg6IFtcImdlbmVyYXRlZFwiXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFZJUlRVQUwgR2VuZXJhdGVkIENvbHVtbiDtg4DsnoUg7KCc7ZWcIOqygOymnVxuICAgIGlmIChkYXRhLmdlbmVyYXRlZC50eXBlID09PSBcIlZJUlRVQUxcIikge1xuICAgICAgaWYgKChWaXJ0dWFsR2VuZXJhdGVkRGlzYWxsb3dlZFR5cGVzIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhkYXRhLnR5cGUpKSB7XG4gICAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgICBtZXNzYWdlOiBgVklSVFVBTCBnZW5lcmF0ZWQgY29sdW1u7J2AICR7ZGF0YS50eXBlfSDtg4DsnoXsnYQg7KeA7JuQ7ZWY7KeAIOyViuyKteuLiOuLpC4gU1RPUkVE66W8IOyCrOyaqe2VmOyEuOyalC5gLFxuICAgICAgICAgIHBhdGg6IFtcImdlbmVyYXRlZFwiLCBcInR5cGVcIl0sXG4gICAgICAgICAgZmF0YWw6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbmNvbnN0IEFsbFByb3BUeXBlcyA9IFsuLi5Ob3JtYWxQcm9wVHlwZXMsIFwicmVsYXRpb25cIl0gYXMgY29uc3Q7XG5jb25zdCBFbnRpdHlQcm9wU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtOb3JtYWxQcm9wU2NoZW1hLCBSZWxhdGlvblByb3BTY2hlbWFdLCB7XG4gIGVycm9yOiAoaXNzKSA9PlxuICAgIGB0eXBl7J2AICR7QWxsUHJvcFR5cGVzLm1hcCgodCkgPT4gYCcke3R9J2ApLmpvaW4oXCIsIFwiKX0g7KSRIO2VmOuCmOyXrOyVvCDtlanri4jri6QuIOyeheugpeqwkjogXCIkeyhpc3MuaW5wdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy50eXBlfVwiYCxcbn0pO1xuXG5jb25zdCBFbnRpdHlJbmRleENvbHVtblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgbnVsbHNGaXJzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgc29ydE9yZGVyOiB6LmVudW0oW1wiQVNDXCIsIFwiREVTQ1wiXSkub3B0aW9uYWwoKSxcbiAgdmVjdG9yT3BzOiB6LmVudW0oW1widmVjdG9yX2Nvc2luZV9vcHNcIiwgXCJ2ZWN0b3JfaXBfb3BzXCIsIFwidmVjdG9yX2wyX29wc1wiXSkub3B0aW9uYWwoKSxcbiAgb3BjbGFzczogei51bmlvbihbei5lbnVtKEtub3duT3BjbGFzc1ZhbHVlcyksIHouc3RyaW5nKCkubWluKDEpXSkub3B0aW9uYWwoKSxcbn0pO1xuXG4vLyBFbnRpdHlJbmRleCDsiqTtgqTrp4gg7KCV7J2YXG5jb25zdCBFbnRpdHlJbmRleFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdHlwZTogei5lbnVtKFtcImluZGV4XCIsIFwidW5pcXVlXCIsIFwiaG5zd1wiLCBcIml2ZmZsYXRcIl0pLFxuICAgIGNvbHVtbnM6IHouYXJyYXkoRW50aXR5SW5kZXhDb2x1bW5TY2hlbWEpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLm1heCg2MyksXG4gICAgdXNpbmc6IHouZW51bShbXCJidHJlZVwiLCBcImhhc2hcIiwgXCJnaW5cIiwgXCJnaXN0XCIsIFwicGdyb29uZ2FcIl0pLm9wdGlvbmFsKCksXG4gICAgbnVsbHNOb3REaXN0aW5jdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBtOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgZWZDb25zdHJ1Y3Rpb246IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBsaXN0czogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbi8qKlxuICogU3Vic2V0RGVmIOyKpO2CpOuniFxuICpcbiAqIO2VmOychCDtmLjtmZjshLHsnYQg7JyE7ZW0IOuwsOyXtCDtmJXtg5zsmYAg6rCd7LK0IO2Yle2DnCDrkZgg64ukIOyngOybkO2VqeuLiOuLpC5cbiAqL1xuY29uc3QgU3Vic2V0RGVmU2NoZW1hID0gei51bmlvbihbXG4gIC8vIOq4sOyhtCDrsLDsl7Qg7ZiV7YOcXG4gIHouYXJyYXkoei51bmlvbihbei5zdHJpbmcoKSwgei5vYmplY3QoeyBmaWVsZDogei5zdHJpbmcoKSwgaW50ZXJuYWw6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkgfSldKSksXG4gIC8vIOyDiOuhnOyatCDqsJ3ssrQg7ZiV7YOcXG4gIHoub2JqZWN0KHtcbiAgICBmaWVsZHM6IHouYXJyYXkoXG4gICAgICB6LnVuaW9uKFt6LnN0cmluZygpLCB6Lm9iamVjdCh7IGZpZWxkOiB6LnN0cmluZygpLCBpbnRlcm5hbDogei5ib29sZWFuKCkub3B0aW9uYWwoKSB9KV0pLFxuICAgICksXG4gICAgY29uZTogQ29uZVNjaGVtYS5vcHRpb25hbCgpLFxuICB9KSxcbl0pO1xuXG4vKipcbiAqIEVudW1EZWYg7Iqk7YKk66eIXG4gKlxuICog7ZWY7JyEIO2YuO2ZmOyEseydhCDsnITtlbQgUmVjb3JkIO2Yle2DnOyZgCDqsJ3ssrQg7ZiV7YOcIOuRmCDri6Qg7KeA7JuQ7ZWp64uI64ukLlxuICovXG5jb25zdCBFbnVtRGVmU2NoZW1hID0gei51bmlvbihbXG4gIC8vIOq4sOyhtCBSZWNvcmQg7ZiV7YOcXG4gIHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLFxuICAvLyDsg4jroZzsmrQg6rCd7LK0IO2Yle2DnFxuICB6Lm9iamVjdCh7XG4gICAgdmFsdWVzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKSxcbiAgICBjb25lOiBDb25lU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pLFxuXSk7XG5cbmZ1bmN0aW9uIHVud3JhcFNlYXJjaFRleHRKc29uU291cmNlVHlwZSh6b2RUeXBlOiB6LlpvZFR5cGVBbnkpOiB6LlpvZFR5cGVBbnkge1xuICBsZXQgY3VycmVudCA9IHpvZFR5cGU7XG5cbiAgd2hpbGUgKGN1cnJlbnQgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsIHx8IGN1cnJlbnQgaW5zdGFuY2VvZiB6LlpvZE51bGxhYmxlKSB7XG4gICAgY3VycmVudCA9IGN1cnJlbnQudW53cmFwKCkgYXMgei5ab2RUeXBlQW55O1xuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlYXJjaFRleHRKc29uU291cmNlWm9kVHlwZSh6b2RUeXBlOiB6LlpvZFR5cGVBbnkpOiBib29sZWFuIHtcbiAgY29uc3QgYmFzZVR5cGUgPSB1bndyYXBTZWFyY2hUZXh0SnNvblNvdXJjZVR5cGUoem9kVHlwZSk7XG4gIGlmICghKGJhc2VUeXBlIGluc3RhbmNlb2Ygei5ab2RBcnJheSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBlbGVtZW50VHlwZSA9IGJhc2VUeXBlLmRlZi5lbGVtZW50O1xuICByZXR1cm4gZWxlbWVudFR5cGUgaW5zdGFuY2VvZiB6LlpvZFN0cmluZztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTZWFyY2hUZXh0U291cmNlcyhcbiAgcHJvcHM6IHJlYWRvbmx5IHouaW5mZXI8dHlwZW9mIEVudGl0eVByb3BTY2hlbWE+W10sXG4gIGN0eDogei5SZWZpbmVtZW50Q3R4LFxuICBwcm9wc1BhdGg6IChzdHJpbmcgfCBudW1iZXIpW10gPSBbXCJwcm9wc1wiXSxcbik6IHZvaWQge1xuICBjb25zdCBwcm9wc0J5TmFtZSA9IG5ldyBNYXAoXG4gICAgcHJvcHMubWFwKChwcm9wKSA9PiB7XG4gICAgICByZXR1cm4gW3Byb3AubmFtZSwgcHJvcF07XG4gICAgfSksXG4gICk7XG5cbiAgcHJvcHMuZm9yRWFjaCgocHJvcCwgcHJvcEluZGV4KSA9PiB7XG4gICAgaWYgKHByb3AudHlwZSAhPT0gXCJzZWFyY2hUZXh0XCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm9wLnNvdXJjZUNvbHVtbnMuZm9yRWFjaCgoc291cmNlLCBzb3VyY2VJbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlUHJvcCA9IHByb3BzQnlOYW1lLmdldChzb3VyY2UubmFtZSk7XG4gICAgICBjb25zdCBzb3VyY2VQYXRoID0gWy4uLnByb3BzUGF0aCwgcHJvcEluZGV4LCBcInNvdXJjZUNvbHVtbnNcIiwgc291cmNlSW5kZXgsIFwibmFtZVwiXTtcblxuICAgICAgaWYgKCFzb3VyY2VQcm9wKSB7XG4gICAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgICBtZXNzYWdlOiBgc2VhcmNoVGV4dCBzb3VyY2UgY29sdW1uIFwiJHtzb3VyY2UubmFtZX1cIuydhCjrpbwpIOywvuydhCDsiJgg7JeG7Iq164uI64ukLmAsXG4gICAgICAgICAgcGF0aDogc291cmNlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHNvdXJjZVByb3AudHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBzb3VyY2VQcm9wLnR5cGUgPT09IFwic3RyaW5nW11cIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChzb3VyY2VQcm9wLnR5cGUgPT09IFwianNvblwiKSB7XG4gICAgICAgIC8vIGpzb24gc291cmNl7J2YIOy1nOyihSDtg4DsnoUg7Jyg7Zqo7ISx7J2AIEVudGl0eU1hbmFnZXIucmVnaXN0ZXIoKSDri6jqs4Tsl5DshJxcbiAgICAgICAgLy8g7Iuk7KCcIFpvZCDtg4DsnoXsnYQg7ZW07ISd7ZWY7JesIOq1rOyhsOyggeycvOuhnCDqsoDspp3tlanri4jri6QuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgbWVzc2FnZTogYHNlYXJjaFRleHQgc291cmNlIGNvbHVtbiBcIiR7c291cmNlLm5hbWV9XCLsnZgg7YOA7J6FIFwiJHtzb3VyY2VQcm9wLnR5cGV9XCLsnYAo64qUKSDsp4Dsm5DrkJjsp4Ag7JWK7Iq164uI64ukLmAsXG4gICAgICAgIHBhdGg6IHNvdXJjZVBhdGgsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmNvbnN0IEVudGl0eUpzb25CYXNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBpZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlBhc2NhbENhc2XroZwg65CcIEVudGl0eSBJRFwiKSxcbiAgICB0aXRsZTogei5zdHJpbmcoKS5kZXNjcmliZShcIkVudGl0eSDsnbTrpoRcIiksXG4gICAgdGFibGU6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJzbmFrZV9jYXNl66GcIOuQnCDthYzsnbTruJTrqoVcIiksXG4gICAgcGFyZW50SWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIuu2gOuqqCBFbnRpdHkgSURcIiksXG4gICAgY29uZTogQ29uZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIHByb3BzOiB6LmFycmF5KEVudGl0eVByb3BTY2hlbWEpLFxuICAgIGluZGV4ZXM6IHouYXJyYXkoRW50aXR5SW5kZXhTY2hlbWEpLFxuICAgIHN1YnNldHM6IHoucmVjb3JkKHouc3RyaW5nKCksIFN1YnNldERlZlNjaGVtYSksXG4gICAgZW51bXM6IHoucmVjb3JkKHouc3RyaW5nKCksIEVudW1EZWZTY2hlbWEpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmV4cG9ydCBjb25zdCBFbnRpdHlKc29uU2NoZW1hID0gRW50aXR5SnNvbkJhc2VTY2hlbWEuc3VwZXJSZWZpbmUoKGVudGl0eSwgY3R4KSA9PiB7XG4gIHZhbGlkYXRlU2VhcmNoVGV4dFNvdXJjZXMoZW50aXR5LnByb3BzLCBjdHgpO1xufSk7XG5cbmNvbnN0IFRlbXBsYXRlRW50aXR5U2NoZW1hID0gRW50aXR5SnNvbkJhc2VTY2hlbWEub21pdCh7IGlkOiB0cnVlIH0pXG4gIC5leHRlbmQoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICB9KVxuICAucGFydGlhbCh7XG4gICAgdGFibGU6IHRydWUsXG4gICAgcHJvcHM6IHRydWUsXG4gICAgaW5kZXhlczogdHJ1ZSxcbiAgICBzdWJzZXRzOiB0cnVlLFxuICAgIGVudW1zOiB0cnVlLFxuICB9KVxuICAuc3VwZXJSZWZpbmUoKGVudGl0eSwgY3R4KSA9PiB7XG4gICAgaWYgKCFlbnRpdHkucHJvcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVNlYXJjaFRleHRTb3VyY2VzKGVudGl0eS5wcm9wcywgY3R4KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gIGVudGl0eTogVGVtcGxhdGVFbnRpdHlTY2hlbWEsXG4gIGluaXRfdHlwZXM6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGdlbmVyYXRlZDogei5vYmplY3Qoe30pLFxuICBnZW5lcmF0ZWRfc3NvOiB6Lm9iamVjdCh7fSksXG4gIGdlbmVyYXRlZF9odHRwOiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBtb2RlbDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGRlZmF1bHRTZWFyY2hGaWVsZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRlZmF1bHRPcmRlckJ5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBtb2RlbF90ZXN0OiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBicmlkZ2U6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHNlcnZpY2VzOiB6Lm9iamVjdCh7fSksXG4gIHZpZXdfbGlzdDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGV4dHJhOiB6LnVua25vd24oKSxcbiAgfSksXG4gIHZpZXdfbGlzdF9jb2x1bW5zOiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gICAgY29sdW1uczogelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIGxhYmVsOiB6LnN0cmluZygpLFxuICAgICAgICB0Yzogei5zdHJpbmcoKSxcbiAgICAgIH0pXG4gICAgICAuYXJyYXkoKSxcbiAgICBjb2x1bW5JbXBvcnRzOiB6LnN0cmluZygpLFxuICB9KSxcbiAgdmlld19zZWFyY2hfaW5wdXQ6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHZpZXdfZm9ybTogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICB9KSxcbiAgdmlld19pZF9hbGxfc2VsZWN0OiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB2aWV3X2VudW1zX2J1dHRvbnNldDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGVudW1JZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHF1ZXJpZXM6IHoub2JqZWN0KHt9KSxcbiAgZW50cnlfc2VydmVyOiB6Lm9iamVjdCh7fSksXG4gIHNkOiB6Lm9iamVjdCh7XG4gICAgdGFyZ2V0OiB6LmVudW0oW1wiYXBpXCIsIFwid2ViXCIsIFwiYXBwXCJdKSxcbiAgfSksXG59KTtcbmV4cG9ydCB0eXBlIFRlbXBsYXRlT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIFRlbXBsYXRlT3B0aW9ucz47XG5cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZUtleSA9IHouZW51bShbXG4gIFwiZW50aXR5XCIsXG4gIFwiaW5pdF90eXBlc1wiLFxuICBcImdlbmVyYXRlZFwiLFxuICBcImdlbmVyYXRlZF9zc29cIixcbiAgXCJnZW5lcmF0ZWRfaHR0cFwiLFxuICBcIm1vZGVsXCIsXG4gIFwibW9kZWxfdGVzdFwiLFxuICBcImJyaWRnZVwiLFxuICBcInNlcnZpY2VzXCIsXG4gIFwidmlld19saXN0XCIsXG4gIFwidmlld19saXN0X2NvbHVtbnNcIixcbiAgXCJ2aWV3X3NlYXJjaF9pbnB1dFwiLFxuICBcInZpZXdfZm9ybVwiLFxuICBcInZpZXdfaWRfYWxsX3NlbGVjdFwiLFxuICBcInZpZXdfZW51bXNfYnV0dG9uc2V0XCIsXG4gIFwicXVlcmllc1wiLFxuICBcImVudHJ5X3NlcnZlclwiLFxuICBcInNkXCIsXG5dKTtcbmV4cG9ydCB0eXBlIFRlbXBsYXRlS2V5ID0gei5pbmZlcjx0eXBlb2YgVGVtcGxhdGVLZXk+O1xuXG5leHBvcnQgY29uc3QgR2VuZXJhdGVPcHRpb25zID0gei5vYmplY3Qoe1xuICBvdmVyd3JpdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEdlbmVyYXRlT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIEdlbmVyYXRlT3B0aW9ucz47XG5cbmV4cG9ydCBjb25zdCBQYXRoQW5kQ29kZSA9IHoub2JqZWN0KHtcbiAgcGF0aDogei5zdHJpbmcoKSxcbiAgY29kZTogei5zdHJpbmcoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUGF0aEFuZENvZGUgPSB6LmluZmVyPHR5cGVvZiBQYXRoQW5kQ29kZT47XG5cbmV4cG9ydCB0eXBlIEZpeHR1cmVTZWFyY2hPcHRpb25zID0ge1xuICBlbnRpdHlJZDogc3RyaW5nO1xuICBmaWVsZDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBzZWFyY2hUeXBlOiBcImVxdWFsc1wiIHwgXCJsaWtlXCI7XG59O1xuXG50eXBlIENvbHVtblZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBudWxsO1xuZXhwb3J0IHR5cGUgRml4dHVyZVJlY29yZCA9IHtcbiAgZml4dHVyZUlkOiBzdHJpbmc7XG4gIGVudGl0eUlkOiBzdHJpbmc7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmc7XG4gIGNvbHVtbnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICBwcm9wOiBFbnRpdHlQcm9wO1xuICAgICAgdmFsdWU6IENvbHVtblZhbHVlIHwgQ29sdW1uVmFsdWVbXTtcbiAgICB9O1xuICB9O1xuICBmZXRjaGVkUmVjb3Jkczogc3RyaW5nW107XG4gIGJlbG9uZ3NSZWNvcmRzOiBzdHJpbmdbXTtcbiAgdGFyZ2V0PzogRml4dHVyZVJlY29yZDsgLy8gSW1wb3J0IOuMgOyDgSBEQiDroIjsvZTrk5woaWTqsIAg6rCZ7J2AKVxuICB1bmlxdWU/OiBGaXh0dXJlUmVjb3JkOyAvLyBJbXBvcnQg64yA7IOBIERCIOugiOy9lOuTnCh1bmlxdWUga2V56rCAIOqwmeydgClcbiAgb3ZlcnJpZGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRml4dHVyZUltcG9ydFJlc3VsdCA9IHtcbiAgZW50aXR5SWQ6IHN0cmluZztcbiAgZGF0YToge1xuICAgIFtrZXk6IHN0cmluZ106IENvbHVtblZhbHVlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25Ob2RlID0ge1xuICBmaXh0dXJlSWQ6IHN0cmluZztcbiAgZW50aXR5SWQ6IHN0cmluZztcbiAgcmVsYXRlZDogU2V0PHN0cmluZz47XG59O1xuXG4vLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZSAtLSBzb25hbXUuZ2VuZXJhdGVkLnNzbyDsl5DshJwg7ZmV7J6l7J2EIOychO2VtCDspIDruYTrkJwg67mIIOyduO2EsO2OmOydtOyKpFxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCB7fVxuLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2UgLS0gc29uYW11LmdlbmVyYXRlZC5zc28g7JeQ7IScIO2ZleyepeydhCDsnITtlbQg7KSA67mE65CcIOu5iCDsnbjthLDtjpjsnbTsiqRcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGb3JlaWduS2V5cyB7fVxuZXhwb3J0IHR5cGUgTWFueVRvTWFueUJhc2VTY2hlbWE8XG4gIEZyb21JZEtleSBleHRlbmRzIHN0cmluZyxcbiAgVG9JZEtleSBleHRlbmRzIHN0cmluZyxcbiAgRnJvbVBrVHlwZSA9IG51bWJlcixcbiAgVG9Qa1R5cGUgPSBudW1iZXIsXG4+ID0ge1xuICBpZDogbnVtYmVyO1xufSAmIHtcbiAgW0sgaW4gYCR7RnJvbUlkS2V5fV9pZGBdOiBGcm9tUGtUeXBlO1xufSAmIHtcbiAgW0sgaW4gYCR7VG9JZEtleX1faWRgXTogVG9Qa1R5cGU7XG59O1xuXG4vLyDqsJ3ssrQsIO2VqOyImCwg67mE64+Z6riwIO2VqOyImOulvCDrqqjrkZAg7Y+s6rSE7ZWY64qUIO2DgOyehVxuZXhwb3J0IHR5cGUgRXhlY3V0YWJsZTxUPiA9IFQgfCBQcm9taXNlPFQ+IHwgKCgpID0+IFQpIHwgKCgpID0+IFByb21pc2U8VD4pO1xuXG5leHBvcnQgdHlwZSBTb25hbXVGYXN0aWZ5Q29uZmlnID0ge1xuICBjb250ZXh0UHJvdmlkZXI6IChcbiAgICBkZWZhdWx0Q29udGV4dDogUGljazxcbiAgICAgIENvbnRleHQsXG4gICAgICB8IFwidHJhbnNwb3J0XCJcbiAgICAgIHwgXCJyZXF1ZXN0XCJcbiAgICAgIHwgXCJyZXBseVwiXG4gICAgICB8IFwiaGVhZGVyc1wiXG4gICAgICB8IFwiY3JlYXRlU1NFXCJcbiAgICAgIHwgXCJuYWl0ZVN0b3JlXCJcbiAgICAgIHwgXCJsb2NhbGVcIlxuICAgICAgfCBcInVzZXJcIlxuICAgICAgfCBcInNlc3Npb25cIlxuICAgID4sXG4gICAgcmVxdWVzdDogRmFzdGlmeVJlcXVlc3QsXG4gICAgcmVwbHk6IEZhc3RpZnlSZXBseSxcbiAgKSA9PiBDb250ZXh0IHwgUHJvbWlzZTxDb250ZXh0PjtcbiAgd2Vic29ja2V0Q29udGV4dFByb3ZpZGVyPzogKFxuICAgIGRlZmF1bHRDb250ZXh0OiBQaWNrPFxuICAgICAgaW1wb3J0KFwiLi4vYXBpL2NvbnRleHRcIikuV2ViU29ja2V0Q29udGV4dCxcbiAgICAgIFwidHJhbnNwb3J0XCIgfCBcInJlcXVlc3RcIiB8IFwiaGVhZGVyc1wiIHwgXCJ3c1wiIHwgXCJuYWl0ZVN0b3JlXCIgfCBcImxvY2FsZVwiIHwgXCJ1c2VyXCIgfCBcInNlc3Npb25cIlxuICAgID4sXG4gICAgcmVxdWVzdDogRmFzdGlmeVJlcXVlc3QsXG4gICkgPT5cbiAgICB8IGltcG9ydChcIi4uL2FwaS9jb250ZXh0XCIpLldlYlNvY2tldENvbnRleHRcbiAgICB8IFByb21pc2U8aW1wb3J0KFwiLi4vYXBpL2NvbnRleHRcIikuV2ViU29ja2V0Q29udGV4dD47XG4gIGd1YXJkSGFuZGxlcjogKFxuICAgIGd1YXJkOiBHdWFyZEtleSxcbiAgICByZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCxcbiAgICBhcGk6IHtcbiAgICAgIHR5cGVQYXJhbWV0ZXJzOiBBcGlQYXJhbVR5cGUuVHlwZVBhcmFtW107XG4gICAgICBwYXJhbWV0ZXJzOiBBcGlQYXJhbVtdO1xuICAgICAgcmV0dXJuVHlwZTogQXBpUGFyYW1UeXBlO1xuICAgICAgbW9kZWxOYW1lOiBzdHJpbmc7XG4gICAgICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgICBvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zO1xuICAgIH0sXG4gICkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIOyghOyXrSBDYWNoZS1Db250cm9sIO2VuOuTpOufrOyeheuLiOuLpC5cbiAgICog7JqU7LKtIO2DgOyehShhcGksIGFzc2V0cywgc3NyLCBjc3Ip7JeQIOuUsOudvCBDYWNoZS1Db250cm9sIOyEpOygleydhCDrsJjtmZjtlanri4jri6QuXG4gICAqIHVuZGVmaW5lZOulvCDrsJjtmZjtlZjrqbQg7YOA7J6F67OEIOq4sOuzuOqwkuydtCDsoIHsmqnrkKnri4jri6QuXG4gICAqL1xuICBjYWNoZUNvbnRyb2xIYW5kbGVyPzogQ2FjaGVD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
|
package/dist/ui/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/ui/api.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAmD/C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/ui/api.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAmD/C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBAi5C/D"}
|