@squiz/dxp-ai-client
Advanced tools
Comparing version 0.5.1 to 0.6.0
# @squiz/dxp-ai-client | ||
## 0.6.0 | ||
### Minor Changes | ||
- a4029a9: List threads endpoint | ||
- a4029a9: List threads | ||
## 0.5.1 | ||
@@ -4,0 +11,0 @@ |
@@ -29,2 +29,9 @@ export type AiAuthType = 'none' | 'dxp'; | ||
}; | ||
export interface GetAllGenerativeThreadsParams { | ||
aiId: string; | ||
cursor?: number; | ||
pageSize?: PaginationPageLimit; | ||
sortDirection?: SortDirectionEnum; | ||
} | ||
export type GetAllGenerativeThreadsParams1SortDirectionEnum = 'asc' | 'desc'; | ||
export interface GetExecutionOutputsResponse { | ||
@@ -59,2 +66,9 @@ finishedAt: string | null; | ||
} | ||
export interface PageResultThread { | ||
items: Thread[]; | ||
links?: { | ||
nextPage?: string; | ||
prevPage?: string; | ||
}; | ||
} | ||
export type PaginationPageLimit = 20 | 50 | 100; | ||
@@ -104,2 +118,3 @@ export interface PartialChatBotWrite { | ||
} | ||
export type SortDirectionEnum = 'asc' | 'desc'; | ||
export interface Thread { | ||
@@ -211,2 +226,15 @@ aiId: string; | ||
} | ||
namespace GetAllGenerativeThreads { | ||
type RequestParams = { | ||
aiId: string; | ||
}; | ||
type RequestQuery = { | ||
cursor?: number; | ||
pageSize?: PaginationPageLimit; | ||
sortDirection?: GetAllGenerativeThreadsParams1SortDirectionEnum; | ||
}; | ||
type RequestBody = never; | ||
type RequestHeaders = {}; | ||
type ResponseBody = PageResultThread; | ||
} | ||
namespace GetExecutionOutput { | ||
@@ -331,2 +359,3 @@ type RequestParams = { | ||
get: (id: string, params?: RequestParams) => Promise<PickAiExcludeKeysTenantOrMetadata>; | ||
getAllGenerativeThreads: ({ aiId, ...query }: GetAllGenerativeThreadsParams, params?: RequestParams) => Promise<PageResultThread>; | ||
getExecutionOutput: (aiId: string, flowId: GenerativeCommand, executionId: string, params?: RequestParams) => Promise<GetExecutionOutputsResponse>; | ||
@@ -333,0 +362,0 @@ list: (query: ListParams2, params?: RequestParams) => Promise<PageResultAiResponse>; |
@@ -230,2 +230,10 @@ "use strict"; | ||
}), | ||
getAllGenerativeThreads: ({ aiId, ...query }, params = {}) => this.http.request({ | ||
path: `/generative/${aiId}/threads`, | ||
method: 'GET', | ||
query: query, | ||
secure: true, | ||
format: 'json', | ||
...params, | ||
}), | ||
getExecutionOutput: (aiId, flowId, executionId, params = {}) => this.http.request({ | ||
@@ -276,2 +284,2 @@ path: `/generative/${aiId}/executions/${flowId}/${executionId}`, | ||
exports.Api = Api; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHhwQWlTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYXRlZC9EeHBBaVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMGRBLElBQVksV0FLWDtBQUxELFdBQVksV0FBVztJQUNyQix3Q0FBeUIsQ0FBQTtJQUN6QiwrQ0FBZ0MsQ0FBQTtJQUNoQywrREFBZ0QsQ0FBQTtJQUNoRCxrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsV0FBVywyQkFBWCxXQUFXLFFBS3RCO0FBRUQsTUFBYSxVQUFVO0lBQ2QsT0FBTyxHQUFXLEdBQUcsQ0FBQztJQUNyQixZQUFZLEdBQTRCLElBQUksQ0FBQztJQUM3QyxjQUFjLENBQWlEO0lBQy9ELGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO0lBQzNELFdBQVcsR0FBRyxDQUFDLEdBQUcsV0FBcUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFFbEYsYUFBYSxHQUFrQjtRQUNyQyxXQUFXLEVBQUUsYUFBYTtRQUMxQixPQUFPLEVBQUUsRUFBRTtRQUNYLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLGNBQWMsRUFBRSxhQUFhO0tBQzlCLENBQUM7SUFFRixZQUFZLFlBQXlDLEVBQUU7UUFDckQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGVBQWUsR0FBRyxDQUFDLElBQTZCLEVBQUUsRUFBRTtRQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDLENBQUM7SUFFUSxnQkFBZ0IsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUNoRCxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxPQUFPLEdBQUcsVUFBVSxJQUFJLGtCQUFrQixDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFD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QUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJO1lBQ3RCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxNQUFNO1NBQ1YsQ0FBQztRQVdKLEdBQUcsRUFBRSxDQUFDLEVBQVUsRUFBRSxJQUFxQixFQUFFLFNBQXdCLEVBQUUsRUFBRSxFQUFFLENBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFrQjtZQUNqQyxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUU7WUFDekIsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJO1lBQ3RCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxNQUFNO1NBQ1YsQ0FBQztRQVdKLE1BQU0sRUFBRSxDQUFDLEVBQVUsRUFBRSxJQUFxQixFQUFFLFNBQXdCLEVBQUUsRUFBRSxFQUFFLENBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFrQjtZQUNqQyxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUU7WUFDekIsTUFBTSxFQUFFLE9BQU87WUFDZixJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJO1lBQ3RCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxNQUFNO1NBQ1YsQ0FBQztLQUNMLENBQUM7Q0FDSDtBQXRTRCxrQkFzU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLyogdHNsaW50OmRpc2FibGUgKi9cbi8qXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqICMjIFRISVMgRklMRSBXQVMgR0VORVJBVEVEIFZJQSBTV0FHR0VSLVRZUEVTQ1JJUFQtQVBJICAgICAgICAjI1xuICogIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjXG4gKiAjIyBBVVRIT1I6IGFjYWNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyNcbiAqICMjIFNPVVJDRTogaHR0cHM6Ly9naXRodWIuY29tL2FjYWNvZGUvc3dhZ2dlci10eXBlc2NyaXB0LWFwaSAjI1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuZXhwb3J0IHR5cGUgQWlBdXRoVHlwZSA9ICdub25lJyB8ICdkeHAnO1xuXG5leHBvcnQgdHlwZSBBaUF1dGhUeXBlRHhwID0gJ2R4cCc7XG5cbmV4cG9ydCB0eXBlIEFpUmVzcG9uc2UgPSBPbWl0QWlUZW5hbnRPck1ldGFkYXRhO1xuXG5leHBvcnQgdHlwZSBBaVR5cGUgPSAnZ2VuZXJhdGl2ZScgfCAnY2hhdGJvdCc7XG5cbmV4cG9ydCB0eXBlIEFpVHlwZUNoYXRib3QgPSAnY2hhdGJvdCc7XG5cbmV4cG9ydCB0eXBlIEFpVHlwZUdlbmVyYXRpdmUgPSAnZ2VuZXJhdGl2ZSc7XG5cbmV4cG9ydCB0eXBlIEFpV3JpdGUgPSBQaWNrQWlBdXRoVHlwZU9ySW5zdHJ1Y3Rpb25PclJlc3BvbnNlVGVtcGxhdGVPck5hbWVPclR5cGVPckVuYWJsZWQgJiB7XG4gIHRhZ3M/OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIENoYXRCb3RQYXRjaCA9IFBhcnRpYWxDaGF0Qm90V3JpdGU7XG5cbmV4cG9ydCB0eXBlIENoYXRCb3RXcml0ZSA9IEFpV3JpdGUgJiB7XG4gIHR5cGU6IEFpVHlwZUNoYXRib3Q7XG59O1xuXG5leHBvcnQgdHlwZSBDbGVhbmVkT3V0cHV0Rmxvd3NHZXRFeGVjdXRpb25PdXRwdXRzUmVzcG9uc2VBdE91dHB1dHMgPVxuICBPbWl0Rmxvd3NHZXRFeGVjdXRpb25PdXRwdXRzUmVzcG9uc2VBdE91dHB1dHNJZE9yU2NoZW1hSWQ7XG5cbmV4cG9ydCB0eXBlIERpcmVjdGlvbiA9ICdmb3J3YXJkcycgfCAnYmFja3dhcmRzJztcblxuZXhwb3J0IHR5cGUgRmxvd3NHZXRFeGVjdXRpb25PdXRwdXRzU3RhdHVzRW51bSA9ICdwZW5kaW5nJyB8ICdleGVjdXRpbmcnIHwgJ2ZhaWxlZCcgfCAnc3VjY2VlZGVkJyB8ICdjYW5jZWxsZWQnO1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0aXZlQ29tbWFuZCA9ICdwcm9jZXNzTWVzc2FnZScgfCAncG9wdWxhdGVUaHJlYWRUYWdzJztcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0aXZlRXhlY3V0aW9uUG9zdEJvZHkge1xuICBpbnB1dHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRpdmVFeGVjdXRpb25Qb3N0UmVzcG9uc2Uge1xuICBleGVjdXRpb25JZDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBHZW5lcmF0aXZlUGF0Y2ggPSBQYXJ0aWFsR2VuZXJhdGl2ZVdyaXRlO1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0aXZlV3JpdGUgPSBBaVdyaXRlICYge1xuICBhdXRoVHlwZTogQWlBdXRoVHlwZUR4cDtcbiAgdHlwZTogQWlUeXBlR2VuZXJhdGl2ZTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RXhlY3V0aW9uT3V0cHV0c1Jlc3BvbnNlIHtcbiAgZmluaXNoZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgb3V0cHV0czogQ2xlYW5lZE91dHB1dEZsb3dzR2V0RXhlY3V0aW9uT3V0cHV0c1Jlc3BvbnNlQXRPdXRwdXRzO1xuICBzdGFydGVkQXQ6IHN0cmluZyB8IG51bGw7XG4gIHN0YXR1czogRmxvd3NHZXRFeGVjdXRpb25PdXRwdXRzU3RhdHVzRW51bTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UGFyYW1zIHtcbiAgY3Vyc29yPzogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiBEaXJlY3Rpb247XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBwYWdlU2l6ZT86IFBhZ2luYXRpb25QYWdlTGltaXQ7XG4gIHRhZ3M/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UGFyYW1zMiB7XG4gIGN1cnNvcj86IHN0cmluZztcbiAgZGlyZWN0aW9uPzogRGlyZWN0aW9uO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgcGFnZVNpemU/OiBQYWdpbmF0aW9uUGFnZUxpbWl0O1xuICB0YWdzPzogc3RyaW5nW107XG59XG5cbi8qKiBDb25zdHJ1Y3QgYSB0eXBlIHdpdGggdGhlIHByb3BlcnRpZXMgb2YgVCBleGNlcHQgZm9yIHRob3NlIGluIHR5cGUgSy4gKi9cbmV4cG9ydCB0eXBlIE9taXRBaVRlbmFudE9yTWV0YWRhdGEgPSBQaWNrQWlFeGNsdWRlS2V5c1RlbmFudE9yTWV0YWRhdGE7XG5cbi8qKiBDb25zdHJ1Y3QgYSB0eXBlIHdpdGggdGhlIHByb3BlcnRpZXMgb2YgVCBleGNlcHQgZm9yIHRob3NlIGluIHR5cGUgSy4gKi9cbmV4cG9ydCB0eXBlIE9taXRGbG93c0dldEV4ZWN1dGlvbk91dHB1dHNSZXNwb25zZUF0T3V0cHV0c0lkT3JTY2hlbWFJZCA9XG4gIFBpY2tGbG93c0dldEV4ZWN1dGlvbk91dHB1dHNSZXNwb25zZUF0T3V0cHV0c0V4Y2x1ZGVLZXlzQXRPdXRwdXRzSWRPclNjaGVtYUlkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VSZXN1bHRBaVJlc3BvbnNlIHtcbiAgaXRlbXM6IEFpUmVzcG9uc2VbXTtcbiAgbGlua3M/OiB7XG4gICAgbmV4dFBhZ2U/OiBzdHJpbmc7XG4gICAgcHJldlBhZ2U/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2luYXRpb25QYWdlTGltaXQgPSAyMCB8IDUwIHwgMTAwO1xuXG4vKiogTWFrZSBhbGwgcHJvcGVydGllcyBpbiBUIG9wdGlvbmFsICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpYWxDaGF0Qm90V3JpdGUge1xuICBhdXRoVHlwZT86IEFpQXV0aFR5cGU7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBpbnN0cnVjdGlvbj86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcmVzcG9uc2VUZW1wbGF0ZT86IHN0cmluZztcbiAgdGFncz86IHN0cmluZ1tdO1xuICB0eXBlPzogQWlUeXBlO1xufVxuXG4vKiogTWFrZSBhbGwgcHJvcGVydGllcyBpbiBUIG9wdGlvbmFsICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpYWxHZW5lcmF0aXZlV3JpdGUge1xuICBhdXRoVHlwZT86IEFpQXV0aFR5cGU7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBpbnN0cnVjdGlvbj86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcmVzcG9uc2VUZW1wbGF0ZT86IHN0cmluZztcbiAgdGFncz86IHN0cmluZ1tdO1xuICB0eXBlPzogQWlUeXBlO1xufVxuXG4vKiogRnJvbSBULCBwaWNrIGEgc2V0IG9mIHByb3BlcnRpZXMgd2hvc2Uga2V5cyBhcmUgaW4gdGhlIHVuaW9uIEsgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlja0FpQXV0aFR5cGVPckluc3RydWN0aW9uT3JSZXNwb25zZVRlbXBsYXRlT3JOYW1lT3JUeXBlT3JFbmFibGVkIHtcbiAgYXV0aFR5cGU6IEFpQXV0aFR5cGU7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGluc3RydWN0aW9uOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcmVzcG9uc2VUZW1wbGF0ZTogc3RyaW5nO1xuICB0eXBlOiBBaVR5cGU7XG59XG5cbi8qKiBGcm9tIFQsIHBpY2sgYSBzZXQgb2YgcHJvcGVydGllcyB3aG9zZSBrZXlzIGFyZSBpbiB0aGUgdW5pb24gSyAqL1xuZXhwb3J0IGludGVyZmFjZSBQaWNrQWlFeGNsdWRlS2V5c1RlbmFudE9yTWV0YWRhdGEge1xuICBhdXRoVHlwZTogQWlBdXRoVHlwZTtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgaWQ6IHN0cmluZztcbiAgaW5zdHJ1Y3Rpb246IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogQGZvcm1hdCBkb3VibGUgKi9cbiAgbmVnYXRpdmVDb3VudDogbnVtYmVyO1xuICAvKiogQGZvcm1hdCBkb3VibGUgKi9cbiAgb3ZlcmFsbENvdW50OiBudW1iZXI7XG4gIC8qKiBAZm9ybWF0IGRvdWJsZSAqL1xuICBwb3NpdGl2ZUNvdW50OiBudW1iZXI7XG4gIHJlc3BvbnNlVGVtcGxhdGU6IHN0cmluZztcbiAgdGFnczogc3RyaW5nW107XG4gIHR5cGU6IEFpVHlwZTtcbn1cblxuLyoqIEZyb20gVCwgcGljayBhIHNldCBvZiBwcm9wZXJ0aWVzIHdob3NlIGtleXMgYXJlIGluIHRoZSB1bmlvbiBLICovXG5leHBvcnQgdHlwZSBQaWNrRmxvd3NHZXRFeGVjdXRpb25PdXRwdXRzUmVzcG9uc2VBdE91dHB1dHNFeGNsdWRlS2V5c0F0T3V0cHV0c0lkT3JTY2hlbWFJZCA9IG9iamVjdDtcblxuZXhwb3J0IGludGVyZmFjZSBSYXRlUGF5bG9hZCB7XG4gIHJhdGluZzogVGhyZWFkUmF0aW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRocmVhZCB7XG4gIGFpSWQ6IHN0cmluZztcbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBpbnN0cnVjdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgcmF0aW5nOiBUaHJlYWRSYXRpbmcgfCBudWxsO1xuICB0YWdzOiBzdHJpbmdbXSB8IG51bGw7XG4gIHRpbWVMYXN0SW50ZXJhY3RlZDogc3RyaW5nIHwgbnVsbDtcbiAgdGl0bGU6IHN0cmluZyB8IG51bGw7XG4gIHVwZGF0ZWRBdDogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgVGhyZWFkUmF0aW5nID0gJ3Bvc2l0aXZlJyB8ICduZWdhdGl2ZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ2hhdGJvdCB7XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAdGFncyBjaGF0Ym90XG4gICAqIEBuYW1lIENyZWF0ZVxuICAgKiBAcmVxdWVzdCBQT1NUOi9jaGF0Ym90XG4gICAqIEBzZWN1cmVcbiAgICogQHJlc3BvbnNlIGAyMDFgIGBBaVJlc3BvbnNlYCBDcmVhdGVkXG4gICAqL1xuICBleHBvcnQgbmFtZXNwYWNlIENyZWF0ZSB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gQ2hhdEJvdFdyaXRlO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gQWlSZXNwb25zZTtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgY2hhdGJvdFxuICAgKiBAbmFtZSBEZWxldGVcbiAgICogQHJlcXVlc3QgREVMRVRFOi9jaGF0Ym90L3tpZH1cbiAgICogQHNlY3VyZVxuICAgKiBAcmVzcG9uc2UgYDIwNGAgYHZvaWRgIE5vIGNvbnRlbnRcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgRGVsZXRlIHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gbmV2ZXI7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdEhlYWRlcnMgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXNwb25zZUJvZHkgPSB2b2lkO1xuICB9XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAdGFncyBjaGF0Ym90XG4gICAqIEBuYW1lIEdldFxuICAgKiBAcmVxdWVzdCBHRVQ6L2NoYXRib3Qve2lkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgR2V0IHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gbmV2ZXI7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdEhlYWRlcnMgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXNwb25zZUJvZHkgPSBBaVJlc3BvbnNlO1xuICB9XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAdGFncyBjaGF0Ym90XG4gICAqIEBuYW1lIExpc3RcbiAgICogQHJlcXVlc3QgR0VUOi9jaGF0Ym90XG4gICAqIEBzZWN1cmVcbiAgICogQHJlc3BvbnNlIGAyMDBgIGBQYWdlUmVzdWx0QWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgTGlzdCB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHtcbiAgICAgIGN1cnNvcj86IHN0cmluZztcbiAgICAgIGRpcmVjdGlvbj86IERpcmVjdGlvbjtcbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgcGFnZVNpemU/OiBQYWdpbmF0aW9uUGFnZUxpbWl0O1xuICAgICAgdGFncz86IHN0cmluZ1tdO1xuICAgIH07XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdEJvZHkgPSBuZXZlcjtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0SGVhZGVycyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keSA9IFBhZ2VSZXN1bHRBaVJlc3BvbnNlO1xuICB9XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAdGFncyBjaGF0Ym90XG4gICAqIEBuYW1lIFNldFxuICAgKiBAcmVxdWVzdCBQVVQ6L2NoYXRib3Qve2lkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgU2V0IHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gQ2hhdEJvdFdyaXRlO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gQWlSZXNwb25zZTtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgY2hhdGJvdFxuICAgKiBAbmFtZSBVcGRhdGVcbiAgICogQHJlcXVlc3QgUEFUQ0g6L2NoYXRib3Qve2lkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgVXBkYXRlIHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gQ2hhdEJvdFBhdGNoO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gQWlSZXNwb25zZTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIEdlbmVyYXRpdmUge1xuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgZ2VuZXJhdGl2ZVxuICAgKiBAbmFtZSBDcmVhdGVcbiAgICogQHJlcXVlc3QgUE9TVDovZ2VuZXJhdGl2ZVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAxYCBgQWlSZXNwb25zZWAgQ3JlYXRlZFxuICAgKi9cbiAgZXhwb3J0IG5hbWVzcGFjZSBDcmVhdGUge1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RQYXJhbXMgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UXVlcnkgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IEdlbmVyYXRpdmVXcml0ZTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0SGVhZGVycyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keSA9IEFpUmVzcG9uc2U7XG4gIH1cbiAgLyoqXG4gICAqIE5vIGRlc2NyaXB0aW9uXG4gICAqIEB0YWdzIGdlbmVyYXRpdmVcbiAgICogQG5hbWUgRGVsZXRlXG4gICAqIEByZXF1ZXN0IERFTEVURTovZ2VuZXJhdGl2ZS97aWR9XG4gICAqIEBzZWN1cmVcbiAgICogQHJlc3BvbnNlIGAyMDRgIGB2b2lkYCBObyBjb250ZW50XG4gICAqL1xuICBleHBvcnQgbmFtZXNwYWNlIERlbGV0ZSB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UXVlcnkgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IG5ldmVyO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gdm9pZDtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgZ2VuZXJhdGl2ZSwgZXhlY3V0aW9uXG4gICAqIEBuYW1lIEV4ZWN1dGVcbiAgICogQHJlcXVlc3QgUE9TVDovZ2VuZXJhdGl2ZS97YWlJZH0vZXhlY3V0aW9ucy97Zmxvd0lkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAxYCBgR2VuZXJhdGl2ZUV4ZWN1dGlvblBvc3RSZXNwb25zZWAgQ3JlYXRlZFxuICAgKi9cbiAgZXhwb3J0IG5hbWVzcGFjZSBFeGVjdXRlIHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgYWlJZDogc3RyaW5nO1xuICAgICAgZmxvd0lkOiBHZW5lcmF0aXZlQ29tbWFuZDtcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gR2VuZXJhdGl2ZUV4ZWN1dGlvblBvc3RCb2R5O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gR2VuZXJhdGl2ZUV4ZWN1dGlvblBvc3RSZXNwb25zZTtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgZ2VuZXJhdGl2ZVxuICAgKiBAbmFtZSBHZXRcbiAgICogQHJlcXVlc3QgR0VUOi9nZW5lcmF0aXZlL3tpZH1cbiAgICogQHNlY3VyZVxuICAgKiBAcmVzcG9uc2UgYDIwMGAgYEFpUmVzcG9uc2VgIE9rXG4gICAqL1xuICBleHBvcnQgbmFtZXNwYWNlIEdldCB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UXVlcnkgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IG5ldmVyO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gQWlSZXNwb25zZTtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgZ2VuZXJhdGl2ZSwgZXhlY3V0aW9uXG4gICAqIEBuYW1lIEdldEV4ZWN1dGlvbk91dHB1dFxuICAgKiBAcmVxdWVzdCBHRVQ6L2dlbmVyYXRpdmUve2FpSWR9L2V4ZWN1dGlvbnMve2Zsb3dJZH0ve2V4ZWN1dGlvbklkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAwYCBgR2V0RXhlY3V0aW9uT3V0cHV0c1Jlc3BvbnNlYCBPa1xuICAgKi9cbiAgZXhwb3J0IG5hbWVzcGFjZSBHZXRFeGVjdXRpb25PdXRwdXQge1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RQYXJhbXMgPSB7XG4gICAgICBhaUlkOiBzdHJpbmc7XG4gICAgICBleGVjdXRpb25JZDogc3RyaW5nO1xuICAgICAgZmxvd0lkOiBHZW5lcmF0aXZlQ29tbWFuZDtcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gbmV2ZXI7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdEhlYWRlcnMgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXNwb25zZUJvZHkgPSBHZXRFeGVjdXRpb25PdXRwdXRzUmVzcG9uc2U7XG4gIH1cbiAgLyoqXG4gICAqIE5vIGRlc2NyaXB0aW9uXG4gICAqIEB0YWdzIGdlbmVyYXRpdmVcbiAgICogQG5hbWUgTGlzdFxuICAgKiBAcmVxdWVzdCBHRVQ6L2dlbmVyYXRpdmVcbiAgICogQHNlY3VyZVxuICAgKiBAcmVzcG9uc2UgYDIwMGAgYFBhZ2VSZXN1bHRBaVJlc3BvbnNlYCBPa1xuICAgKi9cbiAgZXhwb3J0IG5hbWVzcGFjZSBMaXN0IHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFF1ZXJ5ID0ge1xuICAgICAgY3Vyc29yPzogc3RyaW5nO1xuICAgICAgZGlyZWN0aW9uPzogRGlyZWN0aW9uO1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgICBwYWdlU2l6ZT86IFBhZ2luYXRpb25QYWdlTGltaXQ7XG4gICAgICB0YWdzPzogc3RyaW5nW107XG4gICAgfTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IG5ldmVyO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gUGFnZVJlc3VsdEFpUmVzcG9uc2U7XG4gIH1cbiAgLyoqXG4gICAqIE5vIGRlc2NyaXB0aW9uXG4gICAqIEBuYW1lIFJhdGVcbiAgICogQHJlcXVlc3QgUE9TVDovZ2VuZXJhdGl2ZS97YWlJZH0vdGhyZWFkcy97dGhyZWFkSWR9L3JhdGVcbiAgICogQHNlY3VyZVxuICAgKiBAcmVzcG9uc2UgYDIwMGAgYFRocmVhZGAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgUmF0ZSB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHtcbiAgICAgIGFpSWQ6IHN0cmluZztcbiAgICAgIHRocmVhZElkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UXVlcnkgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IFJhdGVQYXlsb2FkO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gVGhyZWFkO1xuICB9XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAdGFncyBnZW5lcmF0aXZlXG4gICAqIEBuYW1lIFNldFxuICAgKiBAcmVxdWVzdCBQVVQ6L2dlbmVyYXRpdmUve2lkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgU2V0IHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gR2VuZXJhdGl2ZVdyaXRlO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gQWlSZXNwb25zZTtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgZ2VuZXJhdGl2ZVxuICAgKiBAbmFtZSBVcGRhdGVcbiAgICogQHJlcXVlc3QgUEFUQ0g6L2dlbmVyYXRpdmUve2lkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgVXBkYXRlIHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gR2VuZXJhdGl2ZVBhdGNoO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gQWlSZXNwb25zZTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBRdWVyeVBhcmFtc1R5cGUgPSBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCBhbnk+O1xuZXhwb3J0IHR5cGUgUmVzcG9uc2VGb3JtYXQgPSBrZXlvZiBPbWl0PEJvZHksICdib2R5JyB8ICdib2R5VXNlZCc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGxSZXF1ZXN0UGFyYW1zIGV4dGVuZHMgT21pdDxSZXF1ZXN0SW5pdCwgJ2JvZHknPiB7XG4gIC8qKiBzZXQgcGFyYW1ldGVyIHRvIGB0cnVlYCBmb3IgY2FsbCBgc2VjdXJpdHlXb3JrZXJgIGZvciB0aGlzIHJlcXVlc3QgKi9cbiAgc2VjdXJlPzogYm9vbGVhbjtcbiAgLyoqIHJlcXVlc3QgcGF0aCAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKiBjb250ZW50IHR5cGUgb2YgcmVxdWVzdCBib2R5ICovXG4gIHR5cGU/OiBDb250ZW50VHlwZTtcbiAgLyoqIHF1ZXJ5IHBhcmFtcyAqL1xuICBxdWVyeT86IFF1ZXJ5UGFyYW1zVHlwZTtcbiAgLyoqIGZvcm1hdCBvZiByZXNwb25zZSAoaS5lLiByZXNwb25zZS5qc29uKCkgLT4gZm9ybWF0OiBcImpzb25cIikgKi9cbiAgZm9ybWF0PzogUmVzcG9uc2VGb3JtYXQ7XG4gIC8qKiByZXF1ZXN0IGJvZHkgKi9cbiAgYm9keT86IHVua25vd247XG4gIC8qKiBiYXNlIHVybCAqL1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICAvKiogcmVxdWVzdCBjYW5jZWxsYXRpb24gdG9rZW4gKi9cbiAgY2FuY2VsVG9rZW4/OiBDYW5jZWxUb2tlbjtcbn1cblxuZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IE9taXQ8RnVsbFJlcXVlc3RQYXJhbXMsICdib2R5JyB8ICdtZXRob2QnIHwgJ3F1ZXJ5JyB8ICdwYXRoJz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQ29uZmlnPFNlY3VyaXR5RGF0YVR5cGUgPSB1bmtub3duPiB7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIGJhc2VBcGlQYXJhbXM/OiBPbWl0PFJlcXVlc3RQYXJhbXMsICdiYXNlVXJsJyB8ICdjYW5jZWxUb2tlbicgfCAnc2lnbmFsJz47XG4gIHNlY3VyaXR5V29ya2VyPzogKHNlY3VyaXR5RGF0YTogU2VjdXJpdHlEYXRhVHlwZSB8IG51bGwpID0+IFByb21pc2U8UmVxdWVzdFBhcmFtcyB8IHZvaWQ+IHwgUmVxdWVzdFBhcmFtcyB8IHZvaWQ7XG4gIGN1c3RvbUZldGNoPzogdHlwZW9mIGZldGNoO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBSZXNwb25zZTxEIGV4dGVuZHMgdW5rbm93biwgRSBleHRlbmRzIHVua25vd24gPSB1bmtub3duPiBleHRlbmRzIFJlc3BvbnNlIHtcbiAgZGF0YTogRDtcbiAgZXJyb3I6IEU7XG59XG5cbnR5cGUgQ2FuY2VsVG9rZW4gPSBTeW1ib2wgfCBzdHJpbmcgfCBudW1iZXI7XG5cbmV4cG9ydCBlbnVtIENvbnRlbnRUeXBlIHtcbiAgSnNvbiA9ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgRm9ybURhdGEgPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gIFVybEVuY29kZWQgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgVGV4dCA9ICd0ZXh0L3BsYWluJyxcbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBDbGllbnQ8U2VjdXJpdHlEYXRhVHlwZSA9IHVua25vd24+IHtcbiAgcHVibGljIGJhc2VVcmw6IHN0cmluZyA9ICcvJztcbiAgcHJpdmF0ZSBzZWN1cml0eURhdGE6IFNlY3VyaXR5RGF0YVR5cGUgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzZWN1cml0eVdvcmtlcj86IEFwaUNvbmZpZzxTZWN1cml0eURhdGFUeXBlPlsnc2VjdXJpdHlXb3JrZXInXTtcbiAgcHJpdmF0ZSBhYm9ydENvbnRyb2xsZXJzID0gbmV3IE1hcDxDYW5jZWxUb2tlbiwgQWJvcnRDb250cm9sbGVyPigpO1xuICBwcml2YXRlIGN1c3RvbUZldGNoID0gKC4uLmZldGNoUGFyYW1zOiBQYXJhbWV0ZXJzPHR5cGVvZiBmZXRjaD4pID0+IGZldGNoKC4uLmZldGNoUGFyYW1zKTtcblxuICBwcml2YXRlIGJhc2VBcGlQYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7XG4gICAgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicsXG4gICAgaGVhZGVyczoge30sXG4gICAgcmVkaXJlY3Q6ICdmb2xsb3cnLFxuICAgIHJlZmVycmVyUG9saWN5OiAnbm8tcmVmZXJyZXInLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKGFwaUNvbmZpZzogQXBpQ29uZmlnPFNlY3VyaXR5RGF0YVR5cGU+ID0ge30pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGFwaUNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2VjdXJpdHlEYXRhID0gKGRhdGE6IFNlY3VyaXR5RGF0YVR5cGUgfCBudWxsKSA9PiB7XG4gICAgdGhpcy5zZWN1cml0eURhdGEgPSBkYXRhO1xuICB9O1xuXG4gIHByb3RlY3RlZCBlbmNvZGVRdWVyeVBhcmFtKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChrZXkpO1xuICAgIHJldHVybiBgJHtlbmNvZGVkS2V5fT0ke2VuY29kZVVSSUNvbXBvbmVudCh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiBgJHt2YWx1ZX1gKX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZFF1ZXJ5UGFyYW0ocXVlcnk6IFF1ZXJ5UGFyYW1zVHlwZSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5lbmNvZGVRdWVyeVBhcmFtKGtleSwgcXVlcnlba2V5XSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkQXJyYXlRdWVyeVBhcmFtKHF1ZXJ5OiBRdWVyeVBhcmFtc1R5cGUsIGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgdmFsdWUgPSBxdWVyeVtrZXldO1xuICAgIHJldHVybiB2YWx1ZS5tYXAoKHY6IGFueSkgPT4gdGhpcy5lbmNvZGVRdWVyeVBhcmFtKGtleSwgdikpLmpvaW4oJyYnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b1F1ZXJ5U3RyaW5nKHJhd1F1ZXJ5PzogUXVlcnlQYXJhbXNUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCBxdWVyeSA9IHJhd1F1ZXJ5IHx8IHt9O1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhxdWVyeSkuZmlsdGVyKChrZXkpID0+ICd1bmRlZmluZWQnICE9PSB0eXBlb2YgcXVlcnlba2V5XSk7XG4gICAgcmV0dXJuIGtleXNcbiAgICAgIC5tYXAoKGtleSkgPT4gKEFycmF5LmlzQXJyYXkocXVlcnlba2V5XSkgPyB0aGlzLmFkZEFycmF5UXVlcnlQYXJhbShxdWVyeSwga2V5KSA6IHRoaXMuYWRkUXVlcnlQYXJhbShxdWVyeSwga2V5KSkpXG4gICAgICAuam9pbignJicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZFF1ZXJ5UGFyYW1zKHJhd1F1ZXJ5PzogUXVlcnlQYXJhbXNUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IHRoaXMudG9RdWVyeVN0cmluZyhyYXdRdWVyeSk7XG4gICAgcmV0dXJuIHF1ZXJ5U3RyaW5nID8gYD8ke3F1ZXJ5U3RyaW5nfWAgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgY29udGVudEZvcm1hdHRlcnM6IFJlY29yZDxDb250ZW50VHlwZSwgKGlucHV0OiBhbnkpID0+IGFueT4gPSB7XG4gICAgW0NvbnRlbnRUeXBlLkpzb25dOiAoaW5wdXQ6IGFueSkgPT5cbiAgICAgIGlucHV0ICE9PSBudWxsICYmICh0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpID8gSlNPTi5zdHJpbmdpZnkoaW5wdXQpIDogaW5wdXQsXG4gICAgW0NvbnRlbnRUeXBlLlRleHRdOiAoaW5wdXQ6IGFueSkgPT4gKGlucHV0ICE9PSBudWxsICYmIHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycgPyBKU09OLnN0cmluZ2lmeShpbnB1dCkgOiBpbnB1dCksXG4gICAgW0NvbnRlbnRUeXBlLkZvcm1EYXRhXTogKGlucHV0OiBhbnkpID0+XG4gICAgICBPYmplY3Qua2V5cyhpbnB1dCB8fCB7fSkucmVkdWNlKChmb3JtRGF0YSwga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gaW5wdXRba2V5XTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBwcm9wZXJ0eSBpbnN0YW5jZW9mIEJsb2JcbiAgICAgICAgICAgID8gcHJvcGVydHlcbiAgICAgICAgICAgIDogdHlwZW9mIHByb3BlcnR5ID09PSAnb2JqZWN0JyAmJiBwcm9wZXJ0eSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBKU09OLnN0cmluZ2lmeShwcm9wZXJ0eSlcbiAgICAgICAgICAgIDogYCR7cHJvcGVydHl9YCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZvcm1EYXRhO1xuICAgICAgfSwgbmV3IEZvcm1EYXRhKCkpLFxuICAgIFtDb250ZW50VHlwZS5VcmxFbmNvZGVkXTogKGlucHV0OiBhbnkpID0+IHRoaXMudG9RdWVyeVN0cmluZyhpbnB1dCksXG4gIH07XG5cbiAgcHJvdGVjdGVkIG1lcmdlUmVxdWVzdFBhcmFtcyhwYXJhbXMxOiBSZXF1ZXN0UGFyYW1zLCBwYXJhbXMyPzogUmVxdWVzdFBhcmFtcyk6IFJlcXVlc3RQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmJhc2VBcGlQYXJhbXMsXG4gICAgICAuLi5wYXJhbXMxLFxuICAgICAgLi4uKHBhcmFtczIgfHwge30pLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAuLi4odGhpcy5iYXNlQXBpUGFyYW1zLmhlYWRlcnMgfHwge30pLFxuICAgICAgICAuLi4ocGFyYW1zMS5oZWFkZXJzIHx8IHt9KSxcbiAgICAgICAgLi4uKChwYXJhbXMyICYmIHBhcmFtczIuaGVhZGVycykgfHwge30pLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUFib3J0U2lnbmFsID0gKGNhbmNlbFRva2VuOiBDYW5jZWxUb2tlbik6IEFib3J0U2lnbmFsIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAodGhpcy5hYm9ydENvbnRyb2xsZXJzLmhhcyhjYW5jZWxUb2tlbikpIHtcbiAgICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IHRoaXMuYWJvcnRDb250cm9sbGVycy5nZXQoY2FuY2VsVG9rZW4pO1xuICAgICAgaWYgKGFib3J0Q29udHJvbGxlcikge1xuICAgICAgICByZXR1cm4gYWJvcnRDb250cm9sbGVyLnNpZ25hbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuYWJvcnRDb250cm9sbGVycy5zZXQoY2FuY2VsVG9rZW4sIGFib3J0Q29udHJvbGxlcik7XG4gICAgcmV0dXJuIGFib3J0Q29udHJvbGxlci5zaWduYWw7XG4gIH07XG5cbiAgcHVibGljIGFib3J0UmVxdWVzdCA9IChjYW5jZWxUb2tlbjogQ2FuY2VsVG9rZW4pID0+IHtcbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSB0aGlzLmFib3J0Q29udHJvbGxlcnMuZ2V0KGNhbmNlbFRva2VuKTtcblxuICAgIGlmIChhYm9ydENvbnRyb2xsZXIpIHtcbiAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgICAgdGhpcy5hYm9ydENvbnRyb2xsZXJzLmRlbGV0ZShjYW5jZWxUb2tlbik7XG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyByZXF1ZXN0ID0gYXN5bmMgPFQgPSBhbnksIEUgPSBhbnk+KHtcbiAgICBib2R5LFxuICAgIHNlY3VyZSxcbiAgICBwYXRoLFxuICAgIHR5cGUsXG4gICAgcXVlcnksXG4gICAgZm9ybWF0LFxuICAgIGJhc2VVcmwsXG4gICAgY2FuY2VsVG9rZW4sXG4gICAgLi4ucGFyYW1zXG4gIH06IEZ1bGxSZXF1ZXN0UGFyYW1zKTogUHJvbWlzZTxUPiA9PiB7XG4gICAgY29uc3Qgc2VjdXJlUGFyYW1zID1cbiAgICAgICgodHlwZW9mIHNlY3VyZSA9PT0gJ2Jvb2xlYW4nID8gc2VjdXJlIDogdGhpcy5iYXNlQXBpUGFyYW1zLnNlY3VyZSkgJiZcbiAgICAgICAgdGhpcy5zZWN1cml0eVdvcmtlciAmJlxuICAgICAgICAoYXdhaXQgdGhpcy5zZWN1cml0eVdvcmtlcih0aGlzLnNlY3VyaXR5RGF0YSkpKSB8fFxuICAgICAge307XG4gICAgY29uc3QgcmVxdWVzdFBhcmFtcyA9IHRoaXMubWVyZ2VSZXF1ZXN0UGFyYW1zKHBhcmFtcywgc2VjdXJlUGFyYW1zKTtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IHF1ZXJ5ICYmIHRoaXMudG9RdWVyeVN0cmluZyhxdWVyeSk7XG4gICAgY29uc3QgcGF5bG9hZEZvcm1hdHRlciA9IHRoaXMuY29udGVudEZvcm1hdHRlcnNbdHlwZSB8fCBDb250ZW50VHlwZS5Kc29uXTtcbiAgICBjb25zdCByZXNwb25zZUZvcm1hdCA9IGZvcm1hdCB8fCByZXF1ZXN0UGFyYW1zLmZvcm1hdDtcblxuICAgIHJldHVybiB0aGlzLmN1c3RvbUZldGNoKGAke2Jhc2VVcmwgfHwgdGhpcy5iYXNlVXJsIHx8ICcnfSR7cGF0aH0ke3F1ZXJ5U3RyaW5nID8gYD8ke3F1ZXJ5U3RyaW5nfWAgOiAnJ31gLCB7XG4gICAgICAuLi5yZXF1ZXN0UGFyYW1zLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAuLi4ocmVxdWVzdFBhcmFtcy5oZWFkZXJzIHx8IHt9KSxcbiAgICAgICAgLi4uKHR5cGUgJiYgdHlwZSAhPT0gQ29udGVudFR5cGUuRm9ybURhdGEgPyB7ICdDb250ZW50LVR5cGUnOiB0eXBlIH0gOiB7fSksXG4gICAgICB9LFxuICAgICAgc2lnbmFsOiAoY2FuY2VsVG9rZW4gPyB0aGlzLmNyZWF0ZUFib3J0U2lnbmFsKGNhbmNlbFRva2VuKSA6IHJlcXVlc3RQYXJhbXMuc2lnbmFsKSB8fCBudWxsLFxuICAgICAgYm9keTogdHlwZW9mIGJvZHkgPT09ICd1bmRlZmluZWQnIHx8IGJvZHkgPT09IG51bGwgPyBudWxsIDogcGF5bG9hZEZvcm1hdHRlcihib2R5KSxcbiAgICB9KS50aGVuKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgY29uc3QgciA9IHJlc3BvbnNlIGFzIEh0dHBSZXNwb25zZTxULCBFPjtcbiAgICAgIHIuZGF0YSA9IG51bGwgYXMgdW5rbm93biBhcyBUO1xuICAgICAgci5lcnJvciA9IG51bGwgYXMgdW5rbm93biBhcyBFO1xuXG4gICAgICBjb25zdCBkYXRhID0gIXJlc3BvbnNlRm9ybWF0XG4gICAgICAgID8gclxuICAgICAgICA6IGF3YWl0IHJlc3BvbnNlW3Jlc3BvbnNlRm9ybWF0XSgpXG4gICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoci5vaykge1xuICAgICAgICAgICAgICAgIHIuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgci5lcnJvciA9IGRhdGE7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgIHIuZXJyb3IgPSBlO1xuICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBpZiAoY2FuY2VsVG9rZW4pIHtcbiAgICAgICAgdGhpcy5hYm9ydENvbnRyb2xsZXJzLmRlbGV0ZShjYW5jZWxUb2tlbik7XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHRocm93IGRhdGE7XG4gICAgICByZXR1cm4gZGF0YS5kYXRhO1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIEB0aXRsZSBAc3F1aXovYWktc2VydmljZVxuICogQHZlcnNpb24gMC42LjRcbiAqIEBsaWNlbnNlIElTQ1xuICogQGJhc2VVcmwgL1xuICogQGNvbnRhY3RcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaTxTZWN1cml0eURhdGFUeXBlIGV4dGVuZHMgdW5rbm93bj4ge1xuICBodHRwOiBIdHRwQ2xpZW50PFNlY3VyaXR5RGF0YVR5cGU+O1xuXG4gIGNvbnN0cnVjdG9yKGh0dHA6IEh0dHBDbGllbnQ8U2VjdXJpdHlEYXRhVHlwZT4pIHtcbiAgICB0aGlzLmh0dHAgPSBodHRwO1xuICB9XG5cbiAgY2hhdGJvdCA9IHtcbiAgICAvKipcbiAgICAgKiBObyBkZXNjcmlwdGlvblxuICAgICAqXG4gICAgICogQHRhZ3MgY2hhdGJvdFxuICAgICAqIEBuYW1lIENyZWF0ZVxuICAgICAqIEByZXF1ZXN0IFBPU1Q6L2NoYXRib3RcbiAgICAgKiBAc2VjdXJlXG4gICAgICogQHJlc3BvbnNlIGAyMDFgIGBBaVJlc3BvbnNlYCBDcmVhdGVkXG4gICAgICovXG4gICAgY3JlYXRlOiAoZGF0YTogQ2hhdEJvdFdyaXRlLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PEFpUmVzcG9uc2UsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2NoYXRib3RgLFxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogZGF0YSxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICB0eXBlOiBDb250ZW50VHlwZS5Kc29uLFxuICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBObyBkZXNjcmlwdGlvblxuICAgICAqXG4gICAgICogQHRhZ3MgY2hhdGJvdFxuICAgICAqIEBuYW1lIERlbGV0ZVxuICAgICAqIEByZXF1ZXN0IERFTEVURTovY2hhdGJvdC97aWR9XG4gICAgICogQHNlY3VyZVxuICAgICAqIEByZXNwb25zZSBgMjA0YCBgdm9pZGAgTm8gY29udGVudFxuICAgICAqL1xuICAgIGRlbGV0ZTogKGlkOiBzdHJpbmcsIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8dm9pZCwgYW55Pih7XG4gICAgICAgIHBhdGg6IGAvY2hhdGJvdC8ke2lkfWAsXG4gICAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBObyBkZXNjcmlwdGlvblxuICAgICAqXG4gICAgICogQHRhZ3MgY2hhdGJvdFxuICAgICAqIEBuYW1lIEdldFxuICAgICAqIEByZXF1ZXN0IEdFVDovY2hhdGJvdC97aWR9XG4gICAgICogQHNlY3VyZVxuICAgICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICAgKi9cbiAgICBnZXQ6IChpZDogc3RyaW5nLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PEFpUmVzcG9uc2UsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2NoYXRib3QvJHtpZH1gLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBzZWN1cmU6IHRydWUsXG4gICAgICAgIGZvcm1hdDogJ2pzb24nLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICB9KSxcblxuICAgIC8qKlxuICAgICAqIE5vIGRlc2NyaXB0aW9uXG4gICAgICpcbiAgICAgKiBAdGFncyBjaGF0Ym90XG4gICAgICogQG5hbWUgTGlzdFxuICAgICAqIEByZXF1ZXN0IEdFVDovY2hhdGJvdFxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMGAgYFBhZ2VSZXN1bHRBaVJlc3BvbnNlYCBPa1xuICAgICAqL1xuICAgIGxpc3Q6IChxdWVyeTogTGlzdFBhcmFtcywgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zID0ge30pID0+XG4gICAgICB0aGlzLmh0dHAucmVxdWVzdDxQYWdlUmVzdWx0QWlSZXNwb25zZSwgYW55Pih7XG4gICAgICAgIHBhdGg6IGAvY2hhdGJvdGAsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBObyBkZXNjcmlwdGlvblxuICAgICAqXG4gICAgICogQHRhZ3MgY2hhdGJvdFxuICAgICAqIEBuYW1lIFNldFxuICAgICAqIEByZXF1ZXN0IFBVVDovY2hhdGJvdC97aWR9XG4gICAgICogQHNlY3VyZVxuICAgICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICAgKi9cbiAgICBzZXQ6IChpZDogc3RyaW5nLCBkYXRhOiBDaGF0Qm90V3JpdGUsIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8QWlSZXNwb25zZSwgYW55Pih7XG4gICAgICAgIHBhdGg6IGAvY2hhdGJvdC8ke2lkfWAsXG4gICAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogQ29udGVudFR5cGUuSnNvbixcbiAgICAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGNoYXRib3RcbiAgICAgKiBAbmFtZSBVcGRhdGVcbiAgICAgKiBAcmVxdWVzdCBQQVRDSDovY2hhdGJvdC97aWR9XG4gICAgICogQHNlY3VyZVxuICAgICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICAgKi9cbiAgICB1cGRhdGU6IChpZDogc3RyaW5nLCBkYXRhOiBDaGF0Qm90UGF0Y2gsIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8QWlSZXNwb25zZSwgYW55Pih7XG4gICAgICAgIHBhdGg6IGAvY2hhdGJvdC8ke2lkfWAsXG4gICAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgICAgYm9keTogZGF0YSxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICB0eXBlOiBDb250ZW50VHlwZS5Kc29uLFxuICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG4gIH07XG4gIGdlbmVyYXRpdmUgPSB7XG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGdlbmVyYXRpdmVcbiAgICAgKiBAbmFtZSBDcmVhdGVcbiAgICAgKiBAcmVxdWVzdCBQT1NUOi9nZW5lcmF0aXZlXG4gICAgICogQHNlY3VyZVxuICAgICAqIEByZXNwb25zZSBgMjAxYCBgQWlSZXNwb25zZWAgQ3JlYXRlZFxuICAgICAqL1xuICAgIGNyZWF0ZTogKGRhdGE6IEdlbmVyYXRpdmVXcml0ZSwgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zID0ge30pID0+XG4gICAgICB0aGlzLmh0dHAucmVxdWVzdDxBaVJlc3BvbnNlLCBhbnk+KHtcbiAgICAgICAgcGF0aDogYC9nZW5lcmF0aXZlYCxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogQ29udGVudFR5cGUuSnNvbixcbiAgICAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGdlbmVyYXRpdmVcbiAgICAgKiBAbmFtZSBEZWxldGVcbiAgICAgKiBAcmVxdWVzdCBERUxFVEU6L2dlbmVyYXRpdmUve2lkfVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwNGAgYHZvaWRgIE5vIGNvbnRlbnRcbiAgICAgKi9cbiAgICBkZWxldGU6IChpZDogc3RyaW5nLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PHZvaWQsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2dlbmVyYXRpdmUvJHtpZH1gLFxuICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICBzZWN1cmU6IHRydWUsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGdlbmVyYXRpdmUsIGV4ZWN1dGlvblxuICAgICAqIEBuYW1lIEV4ZWN1dGVcbiAgICAgKiBAcmVxdWVzdCBQT1NUOi9nZW5lcmF0aXZlL3thaUlkfS9leGVjdXRpb25zL3tmbG93SWR9XG4gICAgICogQHNlY3VyZVxuICAgICAqIEByZXNwb25zZSBgMjAxYCBgR2VuZXJhdGl2ZUV4ZWN1dGlvblBvc3RSZXNwb25zZWAgQ3JlYXRlZFxuICAgICAqL1xuICAgIGV4ZWN1dGU6IChhaUlkOiBzdHJpbmcsIGZsb3dJZDogR2VuZXJhdGl2ZUNvbW1hbmQsIGRhdGE6IEdlbmVyYXRpdmVFeGVjdXRpb25Qb3N0Qm9keSwgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zID0ge30pID0+XG4gICAgICB0aGlzLmh0dHAucmVxdWVzdDxHZW5lcmF0aXZlRXhlY3V0aW9uUG9zdFJlc3BvbnNlLCBhbnk+KHtcbiAgICAgICAgcGF0aDogYC9nZW5lcmF0aXZlLyR7YWlJZH0vZXhlY3V0aW9ucy8ke2Zsb3dJZH1gLFxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogZGF0YSxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICB0eXBlOiBDb250ZW50VHlwZS5Kc29uLFxuICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBObyBkZXNjcmlwdGlvblxuICAgICAqXG4gICAgICogQHRhZ3MgZ2VuZXJhdGl2ZVxuICAgICAqIEBuYW1lIEdldFxuICAgICAqIEByZXF1ZXN0IEdFVDovZ2VuZXJhdGl2ZS97aWR9XG4gICAgICogQHNlY3VyZVxuICAgICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICAgKi9cbiAgICBnZXQ6IChpZDogc3RyaW5nLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PEFpUmVzcG9uc2UsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2dlbmVyYXRpdmUvJHtpZH1gLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBzZWN1cmU6IHRydWUsXG4gICAgICAgIGZvcm1hdDogJ2pzb24nLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICB9KSxcblxuICAgIC8qKlxuICAgICAqIE5vIGRlc2NyaXB0aW9uXG4gICAgICpcbiAgICAgKiBAdGFncyBnZW5lcmF0aXZlLCBleGVjdXRpb25cbiAgICAgKiBAbmFtZSBHZXRFeGVjdXRpb25PdXRwdXRcbiAgICAgKiBAcmVxdWVzdCBHRVQ6L2dlbmVyYXRpdmUve2FpSWR9L2V4ZWN1dGlvbnMve2Zsb3dJZH0ve2V4ZWN1dGlvbklkfVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMGAgYEdldEV4ZWN1dGlvbk91dHB1dHNSZXNwb25zZWAgT2tcbiAgICAgKi9cbiAgICBnZXRFeGVjdXRpb25PdXRwdXQ6IChhaUlkOiBzdHJpbmcsIGZsb3dJZDogR2VuZXJhdGl2ZUNvbW1hbmQsIGV4ZWN1dGlvbklkOiBzdHJpbmcsIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8R2V0RXhlY3V0aW9uT3V0cHV0c1Jlc3BvbnNlLCBhbnk+KHtcbiAgICAgICAgcGF0aDogYC9nZW5lcmF0aXZlLyR7YWlJZH0vZXhlY3V0aW9ucy8ke2Zsb3dJZH0vJHtleGVjdXRpb25JZH1gLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBzZWN1cmU6IHRydWUsXG4gICAgICAgIGZvcm1hdDogJ2pzb24nLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICB9KSxcblxuICAgIC8qKlxuICAgICAqIE5vIGRlc2NyaXB0aW9uXG4gICAgICpcbiAgICAgKiBAdGFncyBnZW5lcmF0aXZlXG4gICAgICogQG5hbWUgTGlzdFxuICAgICAqIEByZXF1ZXN0IEdFVDovZ2VuZXJhdGl2ZVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMGAgYFBhZ2VSZXN1bHRBaVJlc3BvbnNlYCBPa1xuICAgICAqL1xuICAgIGxpc3Q6IChxdWVyeTogTGlzdFBhcmFtczIsIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8UGFnZVJlc3VsdEFpUmVzcG9uc2UsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2dlbmVyYXRpdmVgLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEBuYW1lIFJhdGVcbiAgICAgKiBAcmVxdWVzdCBQT1NUOi9nZW5lcmF0aXZlL3thaUlkfS90aHJlYWRzL3t0aHJlYWRJZH0vcmF0ZVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMGAgYFRocmVhZGAgT2tcbiAgICAgKi9cbiAgICByYXRlOiAoYWlJZDogc3RyaW5nLCB0aHJlYWRJZDogc3RyaW5nLCBkYXRhOiBSYXRlUGF5bG9hZCwgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zID0ge30pID0+XG4gICAgICB0aGlzLmh0dHAucmVxdWVzdDxUaHJlYWQsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2dlbmVyYXRpdmUvJHthaUlkfS90aHJlYWRzLyR7dGhyZWFkSWR9L3JhdGVgLFxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogZGF0YSxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICB0eXBlOiBDb250ZW50VHlwZS5Kc29uLFxuICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBObyBkZXNjcmlwdGlvblxuICAgICAqXG4gICAgICogQHRhZ3MgZ2VuZXJhdGl2ZVxuICAgICAqIEBuYW1lIFNldFxuICAgICAqIEByZXF1ZXN0IFBVVDovZ2VuZXJhdGl2ZS97aWR9XG4gICAgICogQHNlY3VyZVxuICAgICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICAgKi9cbiAgICBzZXQ6IChpZDogc3RyaW5nLCBkYXRhOiBHZW5lcmF0aXZlV3JpdGUsIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8QWlSZXNwb25zZSwgYW55Pih7XG4gICAgICAgIHBhdGg6IGAvZ2VuZXJhdGl2ZS8ke2lkfWAsXG4gICAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogQ29udGVudFR5cGUuSnNvbixcbiAgICAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGdlbmVyYXRpdmVcbiAgICAgKiBAbmFtZSBVcGRhdGVcbiAgICAgKiBAcmVxdWVzdCBQQVRDSDovZ2VuZXJhdGl2ZS97aWR9XG4gICAgICogQHNlY3VyZVxuICAgICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICAgKi9cbiAgICB1cGRhdGU6IChpZDogc3RyaW5nLCBkYXRhOiBHZW5lcmF0aXZlUGF0Y2gsIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8QWlSZXNwb25zZSwgYW55Pih7XG4gICAgICAgIHBhdGg6IGAvZ2VuZXJhdGl2ZS8ke2lkfWAsXG4gICAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgICAgYm9keTogZGF0YSxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICB0eXBlOiBDb250ZW50VHlwZS5Kc29uLFxuICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG4gIH07XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHhwQWlTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYXRlZC9EeHBBaVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbWdCQSxJQUFZLFdBS1g7QUFMRCxXQUFZLFdBQVc7SUFDckIsd0NBQXlCLENBQUE7SUFDekIsK0NBQWdDLENBQUE7SUFDaEMsK0RBQWdELENBQUE7SUFDaEQsa0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QjtBQUVELE1BQWEsVUFBVTtJQUNkLE9BQU8sR0FBVyxHQUFHLENBQUM7SUFDckIsWUFBWSxHQUE0QixJQUFJLENBQUM7SUFDN0MsY0FBYyxDQUFpRDtJQUMvRCxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBZ0MsQ0FBQztJQUMzRCxXQUFXLEdBQUcsQ0FBQyxHQUFHLFdBQXFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBRWxGLGFBQWEsR0FBa0I7UUFDckMsV0FBVyxFQUFFLGFBQWE7UUFDMUIsT0FBTyxFQUFFLEVBQUU7UUFDWCxRQUFRLEVBQUUsUUFBUTtRQUNsQixjQUFjLEVBQUUsYUFBYTtLQUM5QixDQUFDO0lBRUYsWUFBWSxZQUF5QyxFQUFFO1FBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxlQUFlLEdBQUcsQ0FBQyxJQUE2QixFQUFFLEVBQUU7UUFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRVEsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDaEQsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsT0FBTyxHQUFHLFVBQVUsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FB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Q0wsQ0FBQztDQUNIO0FBeFRELGtCQXdUQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogIyMgVEhJUyBGSUxFIFdBUyBHRU5FUkFURUQgVklBIFNXQUdHRVItVFlQRVNDUklQVC1BUEkgICAgICAgICMjXG4gKiAjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyNcbiAqICMjIEFVVEhPUjogYWNhY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjI1xuICogIyMgU09VUkNFOiBodHRwczovL2dpdGh1Yi5jb20vYWNhY29kZS9zd2FnZ2VyLXR5cGVzY3JpcHQtYXBpICMjXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5leHBvcnQgdHlwZSBBaUF1dGhUeXBlID0gJ25vbmUnIHwgJ2R4cCc7XG5cbmV4cG9ydCB0eXBlIEFpQXV0aFR5cGVEeHAgPSAnZHhwJztcblxuZXhwb3J0IHR5cGUgQWlSZXNwb25zZSA9IE9taXRBaVRlbmFudE9yTWV0YWRhdGE7XG5cbmV4cG9ydCB0eXBlIEFpVHlwZSA9ICdnZW5lcmF0aXZlJyB8ICdjaGF0Ym90JztcblxuZXhwb3J0IHR5cGUgQWlUeXBlQ2hhdGJvdCA9ICdjaGF0Ym90JztcblxuZXhwb3J0IHR5cGUgQWlUeXBlR2VuZXJhdGl2ZSA9ICdnZW5lcmF0aXZlJztcblxuZXhwb3J0IHR5cGUgQWlXcml0ZSA9IFBpY2tBaUF1dGhUeXBlT3JJbnN0cnVjdGlvbk9yUmVzcG9uc2VUZW1wbGF0ZU9yTmFtZU9yVHlwZU9yRW5hYmxlZCAmIHtcbiAgdGFncz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhdEJvdFBhdGNoID0gUGFydGlhbENoYXRCb3RXcml0ZTtcblxuZXhwb3J0IHR5cGUgQ2hhdEJvdFdyaXRlID0gQWlXcml0ZSAmIHtcbiAgdHlwZTogQWlUeXBlQ2hhdGJvdDtcbn07XG5cbmV4cG9ydCB0eXBlIENsZWFuZWRPdXRwdXRGbG93c0dldEV4ZWN1dGlvbk91dHB1dHNSZXNwb25zZUF0T3V0cHV0cyA9XG4gIE9taXRGbG93c0dldEV4ZWN1dGlvbk91dHB1dHNSZXNwb25zZUF0T3V0cHV0c0lkT3JTY2hlbWFJZDtcblxuZXhwb3J0IHR5cGUgRGlyZWN0aW9uID0gJ2ZvcndhcmRzJyB8ICdiYWNrd2FyZHMnO1xuXG5leHBvcnQgdHlwZSBGbG93c0dldEV4ZWN1dGlvbk91dHB1dHNTdGF0dXNFbnVtID0gJ3BlbmRpbmcnIHwgJ2V4ZWN1dGluZycgfCAnZmFpbGVkJyB8ICdzdWNjZWVkZWQnIHwgJ2NhbmNlbGxlZCc7XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRpdmVDb21tYW5kID0gJ3Byb2Nlc3NNZXNzYWdlJyB8ICdwb3B1bGF0ZVRocmVhZFRhZ3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRpdmVFeGVjdXRpb25Qb3N0Qm9keSB7XG4gIGlucHV0czogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGl2ZUV4ZWN1dGlvblBvc3RSZXNwb25zZSB7XG4gIGV4ZWN1dGlvbklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRpdmVQYXRjaCA9IFBhcnRpYWxHZW5lcmF0aXZlV3JpdGU7XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRpdmVXcml0ZSA9IEFpV3JpdGUgJiB7XG4gIGF1dGhUeXBlOiBBaUF1dGhUeXBlRHhwO1xuICB0eXBlOiBBaVR5cGVHZW5lcmF0aXZlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRBbGxHZW5lcmF0aXZlVGhyZWFkc1BhcmFtcyB7XG4gIGFpSWQ6IHN0cmluZztcbiAgLyoqIEBmb3JtYXQgZG91YmxlICovXG4gIGN1cnNvcj86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBQYWdpbmF0aW9uUGFnZUxpbWl0O1xuICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbkVudW07XG59XG5cbmV4cG9ydCB0eXBlIEdldEFsbEdlbmVyYXRpdmVUaHJlYWRzUGFyYW1zMVNvcnREaXJlY3Rpb25FbnVtID0gJ2FzYycgfCAnZGVzYyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RXhlY3V0aW9uT3V0cHV0c1Jlc3BvbnNlIHtcbiAgZmluaXNoZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgb3V0cHV0czogQ2xlYW5lZE91dHB1dEZsb3dzR2V0RXhlY3V0aW9uT3V0cHV0c1Jlc3BvbnNlQXRPdXRwdXRzO1xuICBzdGFydGVkQXQ6IHN0cmluZyB8IG51bGw7XG4gIHN0YXR1czogRmxvd3NHZXRFeGVjdXRpb25PdXRwdXRzU3RhdHVzRW51bTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UGFyYW1zIHtcbiAgY3Vyc29yPzogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiBEaXJlY3Rpb247XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBwYWdlU2l6ZT86IFBhZ2luYXRpb25QYWdlTGltaXQ7XG4gIHRhZ3M/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UGFyYW1zMiB7XG4gIGN1cnNvcj86IHN0cmluZztcbiAgZGlyZWN0aW9uPzogRGlyZWN0aW9uO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgcGFnZVNpemU/OiBQYWdpbmF0aW9uUGFnZUxpbWl0O1xuICB0YWdzPzogc3RyaW5nW107XG59XG5cbi8qKiBDb25zdHJ1Y3QgYSB0eXBlIHdpdGggdGhlIHByb3BlcnRpZXMgb2YgVCBleGNlcHQgZm9yIHRob3NlIGluIHR5cGUgSy4gKi9cbmV4cG9ydCB0eXBlIE9taXRBaVRlbmFudE9yTWV0YWRhdGEgPSBQaWNrQWlFeGNsdWRlS2V5c1RlbmFudE9yTWV0YWRhdGE7XG5cbi8qKiBDb25zdHJ1Y3QgYSB0eXBlIHdpdGggdGhlIHByb3BlcnRpZXMgb2YgVCBleGNlcHQgZm9yIHRob3NlIGluIHR5cGUgSy4gKi9cbmV4cG9ydCB0eXBlIE9taXRGbG93c0dldEV4ZWN1dGlvbk91dHB1dHNSZXNwb25zZUF0T3V0cHV0c0lkT3JTY2hlbWFJZCA9XG4gIFBpY2tGbG93c0dldEV4ZWN1dGlvbk91dHB1dHNSZXNwb25zZUF0T3V0cHV0c0V4Y2x1ZGVLZXlzQXRPdXRwdXRzSWRPclNjaGVtYUlkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VSZXN1bHRBaVJlc3BvbnNlIHtcbiAgaXRlbXM6IEFpUmVzcG9uc2VbXTtcbiAgbGlua3M/OiB7XG4gICAgbmV4dFBhZ2U/OiBzdHJpbmc7XG4gICAgcHJldlBhZ2U/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVJlc3VsdFRocmVhZCB7XG4gIGl0ZW1zOiBUaHJlYWRbXTtcbiAgbGlua3M/OiB7XG4gICAgbmV4dFBhZ2U/OiBzdHJpbmc7XG4gICAgcHJldlBhZ2U/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2luYXRpb25QYWdlTGltaXQgPSAyMCB8IDUwIHwgMTAwO1xuXG4vKiogTWFrZSBhbGwgcHJvcGVydGllcyBpbiBUIG9wdGlvbmFsICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpYWxDaGF0Qm90V3JpdGUge1xuICBhdXRoVHlwZT86IEFpQXV0aFR5cGU7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBpbnN0cnVjdGlvbj86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcmVzcG9uc2VUZW1wbGF0ZT86IHN0cmluZztcbiAgdGFncz86IHN0cmluZ1tdO1xuICB0eXBlPzogQWlUeXBlO1xufVxuXG4vKiogTWFrZSBhbGwgcHJvcGVydGllcyBpbiBUIG9wdGlvbmFsICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpYWxHZW5lcmF0aXZlV3JpdGUge1xuICBhdXRoVHlwZT86IEFpQXV0aFR5cGU7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBpbnN0cnVjdGlvbj86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcmVzcG9uc2VUZW1wbGF0ZT86IHN0cmluZztcbiAgdGFncz86IHN0cmluZ1tdO1xuICB0eXBlPzogQWlUeXBlO1xufVxuXG4vKiogRnJvbSBULCBwaWNrIGEgc2V0IG9mIHByb3BlcnRpZXMgd2hvc2Uga2V5cyBhcmUgaW4gdGhlIHVuaW9uIEsgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlja0FpQXV0aFR5cGVPckluc3RydWN0aW9uT3JSZXNwb25zZVRlbXBsYXRlT3JOYW1lT3JUeXBlT3JFbmFibGVkIHtcbiAgYXV0aFR5cGU6IEFpQXV0aFR5cGU7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGluc3RydWN0aW9uOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcmVzcG9uc2VUZW1wbGF0ZTogc3RyaW5nO1xuICB0eXBlOiBBaVR5cGU7XG59XG5cbi8qKiBGcm9tIFQsIHBpY2sgYSBzZXQgb2YgcHJvcGVydGllcyB3aG9zZSBrZXlzIGFyZSBpbiB0aGUgdW5pb24gSyAqL1xuZXhwb3J0IGludGVyZmFjZSBQaWNrQWlFeGNsdWRlS2V5c1RlbmFudE9yTWV0YWRhdGEge1xuICBhdXRoVHlwZTogQWlBdXRoVHlwZTtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgaWQ6IHN0cmluZztcbiAgaW5zdHJ1Y3Rpb246IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogQGZvcm1hdCBkb3VibGUgKi9cbiAgbmVnYXRpdmVDb3VudDogbnVtYmVyO1xuICAvKiogQGZvcm1hdCBkb3VibGUgKi9cbiAgb3ZlcmFsbENvdW50OiBudW1iZXI7XG4gIC8qKiBAZm9ybWF0IGRvdWJsZSAqL1xuICBwb3NpdGl2ZUNvdW50OiBudW1iZXI7XG4gIHJlc3BvbnNlVGVtcGxhdGU6IHN0cmluZztcbiAgdGFnczogc3RyaW5nW107XG4gIHR5cGU6IEFpVHlwZTtcbn1cblxuLyoqIEZyb20gVCwgcGljayBhIHNldCBvZiBwcm9wZXJ0aWVzIHdob3NlIGtleXMgYXJlIGluIHRoZSB1bmlvbiBLICovXG5leHBvcnQgdHlwZSBQaWNrRmxvd3NHZXRFeGVjdXRpb25PdXRwdXRzUmVzcG9uc2VBdE91dHB1dHNFeGNsdWRlS2V5c0F0T3V0cHV0c0lkT3JTY2hlbWFJZCA9IG9iamVjdDtcblxuZXhwb3J0IGludGVyZmFjZSBSYXRlUGF5bG9hZCB7XG4gIHJhdGluZzogVGhyZWFkUmF0aW5nO1xufVxuXG5leHBvcnQgdHlwZSBTb3J0RGlyZWN0aW9uRW51bSA9ICdhc2MnIHwgJ2Rlc2MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRocmVhZCB7XG4gIGFpSWQ6IHN0cmluZztcbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBpbnN0cnVjdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgcmF0aW5nOiBUaHJlYWRSYXRpbmcgfCBudWxsO1xuICB0YWdzOiBzdHJpbmdbXSB8IG51bGw7XG4gIHRpbWVMYXN0SW50ZXJhY3RlZDogc3RyaW5nIHwgbnVsbDtcbiAgdGl0bGU6IHN0cmluZyB8IG51bGw7XG4gIHVwZGF0ZWRBdDogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgVGhyZWFkUmF0aW5nID0gJ3Bvc2l0aXZlJyB8ICduZWdhdGl2ZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ2hhdGJvdCB7XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAdGFncyBjaGF0Ym90XG4gICAqIEBuYW1lIENyZWF0ZVxuICAgKiBAcmVxdWVzdCBQT1NUOi9jaGF0Ym90XG4gICAqIEBzZWN1cmVcbiAgICogQHJlc3BvbnNlIGAyMDFgIGBBaVJlc3BvbnNlYCBDcmVhdGVkXG4gICAqL1xuICBleHBvcnQgbmFtZXNwYWNlIENyZWF0ZSB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gQ2hhdEJvdFdyaXRlO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gQWlSZXNwb25zZTtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgY2hhdGJvdFxuICAgKiBAbmFtZSBEZWxldGVcbiAgICogQHJlcXVlc3QgREVMRVRFOi9jaGF0Ym90L3tpZH1cbiAgICogQHNlY3VyZVxuICAgKiBAcmVzcG9uc2UgYDIwNGAgYHZvaWRgIE5vIGNvbnRlbnRcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgRGVsZXRlIHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gbmV2ZXI7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdEhlYWRlcnMgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXNwb25zZUJvZHkgPSB2b2lkO1xuICB9XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAdGFncyBjaGF0Ym90XG4gICAqIEBuYW1lIEdldFxuICAgKiBAcmVxdWVzdCBHRVQ6L2NoYXRib3Qve2lkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgR2V0IHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gbmV2ZXI7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdEhlYWRlcnMgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXNwb25zZUJvZHkgPSBBaVJlc3BvbnNlO1xuICB9XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAdGFncyBjaGF0Ym90XG4gICAqIEBuYW1lIExpc3RcbiAgICogQHJlcXVlc3QgR0VUOi9jaGF0Ym90XG4gICAqIEBzZWN1cmVcbiAgICogQHJlc3BvbnNlIGAyMDBgIGBQYWdlUmVzdWx0QWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgTGlzdCB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHtcbiAgICAgIGN1cnNvcj86IHN0cmluZztcbiAgICAgIGRpcmVjdGlvbj86IERpcmVjdGlvbjtcbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgcGFnZVNpemU/OiBQYWdpbmF0aW9uUGFnZUxpbWl0O1xuICAgICAgdGFncz86IHN0cmluZ1tdO1xuICAgIH07XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdEJvZHkgPSBuZXZlcjtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0SGVhZGVycyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keSA9IFBhZ2VSZXN1bHRBaVJlc3BvbnNlO1xuICB9XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAdGFncyBjaGF0Ym90XG4gICAqIEBuYW1lIFNldFxuICAgKiBAcmVxdWVzdCBQVVQ6L2NoYXRib3Qve2lkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgU2V0IHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gQ2hhdEJvdFdyaXRlO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gQWlSZXNwb25zZTtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgY2hhdGJvdFxuICAgKiBAbmFtZSBVcGRhdGVcbiAgICogQHJlcXVlc3QgUEFUQ0g6L2NoYXRib3Qve2lkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAwYCBgQWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgVXBkYXRlIHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gQ2hhdEJvdFBhdGNoO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gQWlSZXNwb25zZTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIEdlbmVyYXRpdmUge1xuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgZ2VuZXJhdGl2ZVxuICAgKiBAbmFtZSBDcmVhdGVcbiAgICogQHJlcXVlc3QgUE9TVDovZ2VuZXJhdGl2ZVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAxYCBgQWlSZXNwb25zZWAgQ3JlYXRlZFxuICAgKi9cbiAgZXhwb3J0IG5hbWVzcGFjZSBDcmVhdGUge1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RQYXJhbXMgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UXVlcnkgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IEdlbmVyYXRpdmVXcml0ZTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0SGVhZGVycyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keSA9IEFpUmVzcG9uc2U7XG4gIH1cbiAgLyoqXG4gICAqIE5vIGRlc2NyaXB0aW9uXG4gICAqIEB0YWdzIGdlbmVyYXRpdmVcbiAgICogQG5hbWUgRGVsZXRlXG4gICAqIEByZXF1ZXN0IERFTEVURTovZ2VuZXJhdGl2ZS97aWR9XG4gICAqIEBzZWN1cmVcbiAgICogQHJlc3BvbnNlIGAyMDRgIGB2b2lkYCBObyBjb250ZW50XG4gICAqL1xuICBleHBvcnQgbmFtZXNwYWNlIERlbGV0ZSB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UXVlcnkgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IG5ldmVyO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gdm9pZDtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgZ2VuZXJhdGl2ZSwgZXhlY3V0aW9uXG4gICAqIEBuYW1lIEV4ZWN1dGVcbiAgICogQHJlcXVlc3QgUE9TVDovZ2VuZXJhdGl2ZS97YWlJZH0vZXhlY3V0aW9ucy97Zmxvd0lkfVxuICAgKiBAc2VjdXJlXG4gICAqIEByZXNwb25zZSBgMjAxYCBgR2VuZXJhdGl2ZUV4ZWN1dGlvblBvc3RSZXNwb25zZWAgQ3JlYXRlZFxuICAgKi9cbiAgZXhwb3J0IG5hbWVzcGFjZSBFeGVjdXRlIHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgYWlJZDogc3RyaW5nO1xuICAgICAgZmxvd0lkOiBHZW5lcmF0aXZlQ29tbWFuZDtcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gR2VuZXJhdGl2ZUV4ZWN1dGlvblBvc3RCb2R5O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gR2VuZXJhdGl2ZUV4ZWN1dGlvblBvc3RSZXNwb25zZTtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgZ2VuZXJhdGl2ZVxuICAgKiBAbmFtZSBHZXRcbiAgICogQHJlcXVlc3QgR0VUOi9nZW5lcmF0aXZlL3tpZH1cbiAgICogQHNlY3VyZVxuICAgKiBAcmVzcG9uc2UgYDIwMGAgYEFpUmVzcG9uc2VgIE9rXG4gICAqL1xuICBleHBvcnQgbmFtZXNwYWNlIEdldCB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UXVlcnkgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IG5ldmVyO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gQWlSZXNwb25zZTtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQG5hbWUgR2V0QWxsR2VuZXJhdGl2ZVRocmVhZHNcbiAgICogQHJlcXVlc3QgR0VUOi9nZW5lcmF0aXZlL3thaUlkfS90aHJlYWRzXG4gICAqIEBzZWN1cmVcbiAgICogQHJlc3BvbnNlIGAyMDBgIGBQYWdlUmVzdWx0VGhyZWFkYCBPa1xuICAgKi9cbiAgZXhwb3J0IG5hbWVzcGFjZSBHZXRBbGxHZW5lcmF0aXZlVGhyZWFkcyB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHtcbiAgICAgIGFpSWQ6IHN0cmluZztcbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHtcbiAgICAgIC8qKiBAZm9ybWF0IGRvdWJsZSAqL1xuICAgICAgY3Vyc29yPzogbnVtYmVyO1xuICAgICAgcGFnZVNpemU/OiBQYWdpbmF0aW9uUGFnZUxpbWl0O1xuICAgICAgc29ydERpcmVjdGlvbj86IEdldEFsbEdlbmVyYXRpdmVUaHJlYWRzUGFyYW1zMVNvcnREaXJlY3Rpb25FbnVtO1xuICAgIH07XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdEJvZHkgPSBuZXZlcjtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0SGVhZGVycyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keSA9IFBhZ2VSZXN1bHRUaHJlYWQ7XG4gIH1cbiAgLyoqXG4gICAqIE5vIGRlc2NyaXB0aW9uXG4gICAqIEB0YWdzIGdlbmVyYXRpdmUsIGV4ZWN1dGlvblxuICAgKiBAbmFtZSBHZXRFeGVjdXRpb25PdXRwdXRcbiAgICogQHJlcXVlc3QgR0VUOi9nZW5lcmF0aXZlL3thaUlkfS9leGVjdXRpb25zL3tmbG93SWR9L3tleGVjdXRpb25JZH1cbiAgICogQHNlY3VyZVxuICAgKiBAcmVzcG9uc2UgYDIwMGAgYEdldEV4ZWN1dGlvbk91dHB1dHNSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgR2V0RXhlY3V0aW9uT3V0cHV0IHtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgYWlJZDogc3RyaW5nO1xuICAgICAgZXhlY3V0aW9uSWQ6IHN0cmluZztcbiAgICAgIGZsb3dJZDogR2VuZXJhdGl2ZUNvbW1hbmQ7XG4gICAgfTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UXVlcnkgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IG5ldmVyO1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RIZWFkZXJzID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVzcG9uc2VCb2R5ID0gR2V0RXhlY3V0aW9uT3V0cHV0c1Jlc3BvbnNlO1xuICB9XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAdGFncyBnZW5lcmF0aXZlXG4gICAqIEBuYW1lIExpc3RcbiAgICogQHJlcXVlc3QgR0VUOi9nZW5lcmF0aXZlXG4gICAqIEBzZWN1cmVcbiAgICogQHJlc3BvbnNlIGAyMDBgIGBQYWdlUmVzdWx0QWlSZXNwb25zZWAgT2tcbiAgICovXG4gIGV4cG9ydCBuYW1lc3BhY2UgTGlzdCB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RRdWVyeSA9IHtcbiAgICAgIGN1cnNvcj86IHN0cmluZztcbiAgICAgIGRpcmVjdGlvbj86IERpcmVjdGlvbjtcbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgcGFnZVNpemU/OiBQYWdpbmF0aW9uUGFnZUxpbWl0O1xuICAgICAgdGFncz86IHN0cmluZ1tdO1xuICAgIH07XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdEJvZHkgPSBuZXZlcjtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0SGVhZGVycyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keSA9IFBhZ2VSZXN1bHRBaVJlc3BvbnNlO1xuICB9XG4gIC8qKlxuICAgKiBObyBkZXNjcmlwdGlvblxuICAgKiBAbmFtZSBSYXRlXG4gICAqIEByZXF1ZXN0IFBPU1Q6L2dlbmVyYXRpdmUve2FpSWR9L3RocmVhZHMve3RocmVhZElkfS9yYXRlXG4gICAqIEBzZWN1cmVcbiAgICogQHJlc3BvbnNlIGAyMDBgIGBUaHJlYWRgIE9rXG4gICAqL1xuICBleHBvcnQgbmFtZXNwYWNlIFJhdGUge1xuICAgIGV4cG9ydCB0eXBlIFJlcXVlc3RQYXJhbXMgPSB7XG4gICAgICBhaUlkOiBzdHJpbmc7XG4gICAgICB0aHJlYWRJZDogc3RyaW5nO1xuICAgIH07XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFF1ZXJ5ID0ge307XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdEJvZHkgPSBSYXRlUGF5bG9hZDtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0SGVhZGVycyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keSA9IFRocmVhZDtcbiAgfVxuICAvKipcbiAgICogTm8gZGVzY3JpcHRpb25cbiAgICogQHRhZ3MgZ2VuZXJhdGl2ZVxuICAgKiBAbmFtZSBTZXRcbiAgICogQHJlcXVlc3QgUFVUOi9nZW5lcmF0aXZlL3tpZH1cbiAgICogQHNlY3VyZVxuICAgKiBAcmVzcG9uc2UgYDIwMGAgYEFpUmVzcG9uc2VgIE9rXG4gICAqL1xuICBleHBvcnQgbmFtZXNwYWNlIFNldCB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UXVlcnkgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IEdlbmVyYXRpdmVXcml0ZTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0SGVhZGVycyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keSA9IEFpUmVzcG9uc2U7XG4gIH1cbiAgLyoqXG4gICAqIE5vIGRlc2NyaXB0aW9uXG4gICAqIEB0YWdzIGdlbmVyYXRpdmVcbiAgICogQG5hbWUgVXBkYXRlXG4gICAqIEByZXF1ZXN0IFBBVENIOi9nZW5lcmF0aXZlL3tpZH1cbiAgICogQHNlY3VyZVxuICAgKiBAcmVzcG9uc2UgYDIwMGAgYEFpUmVzcG9uc2VgIE9rXG4gICAqL1xuICBleHBvcnQgbmFtZXNwYWNlIFVwZGF0ZSB7XG4gICAgZXhwb3J0IHR5cGUgUmVxdWVzdFBhcmFtcyA9IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0UXVlcnkgPSB7fTtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0Qm9keSA9IEdlbmVyYXRpdmVQYXRjaDtcbiAgICBleHBvcnQgdHlwZSBSZXF1ZXN0SGVhZGVycyA9IHt9O1xuICAgIGV4cG9ydCB0eXBlIFJlc3BvbnNlQm9keSA9IEFpUmVzcG9uc2U7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUXVlcnlQYXJhbXNUeXBlID0gUmVjb3JkPHN0cmluZyB8IG51bWJlciwgYW55PjtcbmV4cG9ydCB0eXBlIFJlc3BvbnNlRm9ybWF0ID0ga2V5b2YgT21pdDxCb2R5LCAnYm9keScgfCAnYm9keVVzZWQnPjtcblxuZXhwb3J0IGludGVyZmFjZSBGdWxsUmVxdWVzdFBhcmFtcyBleHRlbmRzIE9taXQ8UmVxdWVzdEluaXQsICdib2R5Jz4ge1xuICAvKiogc2V0IHBhcmFtZXRlciB0byBgdHJ1ZWAgZm9yIGNhbGwgYHNlY3VyaXR5V29ya2VyYCBmb3IgdGhpcyByZXF1ZXN0ICovXG4gIHNlY3VyZT86IGJvb2xlYW47XG4gIC8qKiByZXF1ZXN0IHBhdGggKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKiogY29udGVudCB0eXBlIG9mIHJlcXVlc3QgYm9keSAqL1xuICB0eXBlPzogQ29udGVudFR5cGU7XG4gIC8qKiBxdWVyeSBwYXJhbXMgKi9cbiAgcXVlcnk/OiBRdWVyeVBhcmFtc1R5cGU7XG4gIC8qKiBmb3JtYXQgb2YgcmVzcG9uc2UgKGkuZS4gcmVzcG9uc2UuanNvbigpIC0+IGZvcm1hdDogXCJqc29uXCIpICovXG4gIGZvcm1hdD86IFJlc3BvbnNlRm9ybWF0O1xuICAvKiogcmVxdWVzdCBib2R5ICovXG4gIGJvZHk/OiB1bmtub3duO1xuICAvKiogYmFzZSB1cmwgKi9cbiAgYmFzZVVybD86IHN0cmluZztcbiAgLyoqIHJlcXVlc3QgY2FuY2VsbGF0aW9uIHRva2VuICovXG4gIGNhbmNlbFRva2VuPzogQ2FuY2VsVG9rZW47XG59XG5cbmV4cG9ydCB0eXBlIFJlcXVlc3RQYXJhbXMgPSBPbWl0PEZ1bGxSZXF1ZXN0UGFyYW1zLCAnYm9keScgfCAnbWV0aG9kJyB8ICdxdWVyeScgfCAncGF0aCc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaUNvbmZpZzxTZWN1cml0eURhdGFUeXBlID0gdW5rbm93bj4ge1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBiYXNlQXBpUGFyYW1zPzogT21pdDxSZXF1ZXN0UGFyYW1zLCAnYmFzZVVybCcgfCAnY2FuY2VsVG9rZW4nIHwgJ3NpZ25hbCc+O1xuICBzZWN1cml0eVdvcmtlcj86IChzZWN1cml0eURhdGE6IFNlY3VyaXR5RGF0YVR5cGUgfCBudWxsKSA9PiBQcm9taXNlPFJlcXVlc3RQYXJhbXMgfCB2b2lkPiB8IFJlcXVlc3RQYXJhbXMgfCB2b2lkO1xuICBjdXN0b21GZXRjaD86IHR5cGVvZiBmZXRjaDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdHRwUmVzcG9uc2U8RCBleHRlbmRzIHVua25vd24sIEUgZXh0ZW5kcyB1bmtub3duID0gdW5rbm93bj4gZXh0ZW5kcyBSZXNwb25zZSB7XG4gIGRhdGE6IEQ7XG4gIGVycm9yOiBFO1xufVxuXG50eXBlIENhbmNlbFRva2VuID0gU3ltYm9sIHwgc3RyaW5nIHwgbnVtYmVyO1xuXG5leHBvcnQgZW51bSBDb250ZW50VHlwZSB7XG4gIEpzb24gPSAnYXBwbGljYXRpb24vanNvbicsXG4gIEZvcm1EYXRhID0gJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICBVcmxFbmNvZGVkID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gIFRleHQgPSAndGV4dC9wbGFpbicsXG59XG5cbmV4cG9ydCBjbGFzcyBIdHRwQ2xpZW50PFNlY3VyaXR5RGF0YVR5cGUgPSB1bmtub3duPiB7XG4gIHB1YmxpYyBiYXNlVXJsOiBzdHJpbmcgPSAnLyc7XG4gIHByaXZhdGUgc2VjdXJpdHlEYXRhOiBTZWN1cml0eURhdGFUeXBlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc2VjdXJpdHlXb3JrZXI/OiBBcGlDb25maWc8U2VjdXJpdHlEYXRhVHlwZT5bJ3NlY3VyaXR5V29ya2VyJ107XG4gIHByaXZhdGUgYWJvcnRDb250cm9sbGVycyA9IG5ldyBNYXA8Q2FuY2VsVG9rZW4sIEFib3J0Q29udHJvbGxlcj4oKTtcbiAgcHJpdmF0ZSBjdXN0b21GZXRjaCA9ICguLi5mZXRjaFBhcmFtczogUGFyYW1ldGVyczx0eXBlb2YgZmV0Y2g+KSA9PiBmZXRjaCguLi5mZXRjaFBhcmFtcyk7XG5cbiAgcHJpdmF0ZSBiYXNlQXBpUGFyYW1zOiBSZXF1ZXN0UGFyYW1zID0ge1xuICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgIGhlYWRlcnM6IHt9LFxuICAgIHJlZGlyZWN0OiAnZm9sbG93JyxcbiAgICByZWZlcnJlclBvbGljeTogJ25vLXJlZmVycmVyJyxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihhcGlDb25maWc6IEFwaUNvbmZpZzxTZWN1cml0eURhdGFUeXBlPiA9IHt9KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBhcGlDb25maWcpO1xuICB9XG5cbiAgcHVibGljIHNldFNlY3VyaXR5RGF0YSA9IChkYXRhOiBTZWN1cml0eURhdGFUeXBlIHwgbnVsbCkgPT4ge1xuICAgIHRoaXMuc2VjdXJpdHlEYXRhID0gZGF0YTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZW5jb2RlUXVlcnlQYXJhbShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGNvbnN0IGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQoa2V5KTtcbiAgICByZXR1cm4gYCR7ZW5jb2RlZEtleX09JHtlbmNvZGVVUklDb21wb25lbnQodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogYCR7dmFsdWV9YCl9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRRdWVyeVBhcmFtKHF1ZXJ5OiBRdWVyeVBhcmFtc1R5cGUsIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5jb2RlUXVlcnlQYXJhbShrZXksIHF1ZXJ5W2tleV0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZEFycmF5UXVlcnlQYXJhbShxdWVyeTogUXVlcnlQYXJhbXNUeXBlLCBrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHZhbHVlID0gcXVlcnlba2V5XTtcbiAgICByZXR1cm4gdmFsdWUubWFwKCh2OiBhbnkpID0+IHRoaXMuZW5jb2RlUXVlcnlQYXJhbShrZXksIHYpKS5qb2luKCcmJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9RdWVyeVN0cmluZyhyYXdRdWVyeT86IFF1ZXJ5UGFyYW1zVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcXVlcnkgPSByYXdRdWVyeSB8fCB7fTtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocXVlcnkpLmZpbHRlcigoa2V5KSA9PiAndW5kZWZpbmVkJyAhPT0gdHlwZW9mIHF1ZXJ5W2tleV0pO1xuICAgIHJldHVybiBrZXlzXG4gICAgICAubWFwKChrZXkpID0+IChBcnJheS5pc0FycmF5KHF1ZXJ5W2tleV0pID8gdGhpcy5hZGRBcnJheVF1ZXJ5UGFyYW0ocXVlcnksIGtleSkgOiB0aGlzLmFkZFF1ZXJ5UGFyYW0ocXVlcnksIGtleSkpKVxuICAgICAgLmpvaW4oJyYnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRRdWVyeVBhcmFtcyhyYXdRdWVyeT86IFF1ZXJ5UGFyYW1zVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB0aGlzLnRvUXVlcnlTdHJpbmcocmF3UXVlcnkpO1xuICAgIHJldHVybiBxdWVyeVN0cmluZyA/IGA/JHtxdWVyeVN0cmluZ31gIDogJyc7XG4gIH1cblxuICBwcml2YXRlIGNvbnRlbnRGb3JtYXR0ZXJzOiBSZWNvcmQ8Q29udGVudFR5cGUsIChpbnB1dDogYW55KSA9PiBhbnk+ID0ge1xuICAgIFtDb250ZW50VHlwZS5Kc29uXTogKGlucHV0OiBhbnkpID0+XG4gICAgICBpbnB1dCAhPT0gbnVsbCAmJiAodHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSA/IEpTT04uc3RyaW5naWZ5KGlucHV0KSA6IGlucHV0LFxuICAgIFtDb250ZW50VHlwZS5UZXh0XTogKGlucHV0OiBhbnkpID0+IChpbnB1dCAhPT0gbnVsbCAmJiB0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnID8gSlNPTi5zdHJpbmdpZnkoaW5wdXQpIDogaW5wdXQpLFxuICAgIFtDb250ZW50VHlwZS5Gb3JtRGF0YV06IChpbnB1dDogYW55KSA9PlxuICAgICAgT2JqZWN0LmtleXMoaW5wdXQgfHwge30pLnJlZHVjZSgoZm9ybURhdGEsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGlucHV0W2tleV07XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcHJvcGVydHkgaW5zdGFuY2VvZiBCbG9iXG4gICAgICAgICAgICA/IHByb3BlcnR5XG4gICAgICAgICAgICA6IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ29iamVjdCcgJiYgcHJvcGVydHkgIT09IG51bGxcbiAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkocHJvcGVydHkpXG4gICAgICAgICAgICA6IGAke3Byb3BlcnR5fWAsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmb3JtRGF0YTtcbiAgICAgIH0sIG5ldyBGb3JtRGF0YSgpKSxcbiAgICBbQ29udGVudFR5cGUuVXJsRW5jb2RlZF06IChpbnB1dDogYW55KSA9PiB0aGlzLnRvUXVlcnlTdHJpbmcoaW5wdXQpLFxuICB9O1xuXG4gIHByb3RlY3RlZCBtZXJnZVJlcXVlc3RQYXJhbXMocGFyYW1zMTogUmVxdWVzdFBhcmFtcywgcGFyYW1zMj86IFJlcXVlc3RQYXJhbXMpOiBSZXF1ZXN0UGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5iYXNlQXBpUGFyYW1zLFxuICAgICAgLi4ucGFyYW1zMSxcbiAgICAgIC4uLihwYXJhbXMyIHx8IHt9KSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgLi4uKHRoaXMuYmFzZUFwaVBhcmFtcy5oZWFkZXJzIHx8IHt9KSxcbiAgICAgICAgLi4uKHBhcmFtczEuaGVhZGVycyB8fCB7fSksXG4gICAgICAgIC4uLigocGFyYW1zMiAmJiBwYXJhbXMyLmhlYWRlcnMpIHx8IHt9KSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVBYm9ydFNpZ25hbCA9IChjYW5jZWxUb2tlbjogQ2FuY2VsVG9rZW4pOiBBYm9ydFNpZ25hbCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHRoaXMuYWJvcnRDb250cm9sbGVycy5oYXMoY2FuY2VsVG9rZW4pKSB7XG4gICAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSB0aGlzLmFib3J0Q29udHJvbGxlcnMuZ2V0KGNhbmNlbFRva2VuKTtcbiAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIpIHtcbiAgICAgICAgcmV0dXJuIGFib3J0Q29udHJvbGxlci5zaWduYWw7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cblxuICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLmFib3J0Q29udHJvbGxlcnMuc2V0KGNhbmNlbFRva2VuLCBhYm9ydENvbnRyb2xsZXIpO1xuICAgIHJldHVybiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsO1xuICB9O1xuXG4gIHB1YmxpYyBhYm9ydFJlcXVlc3QgPSAoY2FuY2VsVG9rZW46IENhbmNlbFRva2VuKSA9PiB7XG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gdGhpcy5hYm9ydENvbnRyb2xsZXJzLmdldChjYW5jZWxUb2tlbik7XG5cbiAgICBpZiAoYWJvcnRDb250cm9sbGVyKSB7XG4gICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgIHRoaXMuYWJvcnRDb250cm9sbGVycy5kZWxldGUoY2FuY2VsVG9rZW4pO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgcmVxdWVzdCA9IGFzeW5jIDxUID0gYW55LCBFID0gYW55Pih7XG4gICAgYm9keSxcbiAgICBzZWN1cmUsXG4gICAgcGF0aCxcbiAgICB0eXBlLFxuICAgIHF1ZXJ5LFxuICAgIGZvcm1hdCxcbiAgICBiYXNlVXJsLFxuICAgIGNhbmNlbFRva2VuLFxuICAgIC4uLnBhcmFtc1xuICB9OiBGdWxsUmVxdWVzdFBhcmFtcyk6IFByb21pc2U8VD4gPT4ge1xuICAgIGNvbnN0IHNlY3VyZVBhcmFtcyA9XG4gICAgICAoKHR5cGVvZiBzZWN1cmUgPT09ICdib29sZWFuJyA/IHNlY3VyZSA6IHRoaXMuYmFzZUFwaVBhcmFtcy5zZWN1cmUpICYmXG4gICAgICAgIHRoaXMuc2VjdXJpdHlXb3JrZXIgJiZcbiAgICAgICAgKGF3YWl0IHRoaXMuc2VjdXJpdHlXb3JrZXIodGhpcy5zZWN1cml0eURhdGEpKSkgfHxcbiAgICAgIHt9O1xuICAgIGNvbnN0IHJlcXVlc3RQYXJhbXMgPSB0aGlzLm1lcmdlUmVxdWVzdFBhcmFtcyhwYXJhbXMsIHNlY3VyZVBhcmFtcyk7XG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBxdWVyeSAmJiB0aGlzLnRvUXVlcnlTdHJpbmcocXVlcnkpO1xuICAgIGNvbnN0IHBheWxvYWRGb3JtYXR0ZXIgPSB0aGlzLmNvbnRlbnRGb3JtYXR0ZXJzW3R5cGUgfHwgQ29udGVudFR5cGUuSnNvbl07XG4gICAgY29uc3QgcmVzcG9uc2VGb3JtYXQgPSBmb3JtYXQgfHwgcmVxdWVzdFBhcmFtcy5mb3JtYXQ7XG5cbiAgICByZXR1cm4gdGhpcy5jdXN0b21GZXRjaChgJHtiYXNlVXJsIHx8IHRoaXMuYmFzZVVybCB8fCAnJ30ke3BhdGh9JHtxdWVyeVN0cmluZyA/IGA/JHtxdWVyeVN0cmluZ31gIDogJyd9YCwge1xuICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgLi4uKHJlcXVlc3RQYXJhbXMuaGVhZGVycyB8fCB7fSksXG4gICAgICAgIC4uLih0eXBlICYmIHR5cGUgIT09IENvbnRlbnRUeXBlLkZvcm1EYXRhID8geyAnQ29udGVudC1UeXBlJzogdHlwZSB9IDoge30pLFxuICAgICAgfSxcbiAgICAgIHNpZ25hbDogKGNhbmNlbFRva2VuID8gdGhpcy5jcmVhdGVBYm9ydFNpZ25hbChjYW5jZWxUb2tlbikgOiByZXF1ZXN0UGFyYW1zLnNpZ25hbCkgfHwgbnVsbCxcbiAgICAgIGJvZHk6IHR5cGVvZiBib2R5ID09PSAndW5kZWZpbmVkJyB8fCBib2R5ID09PSBudWxsID8gbnVsbCA6IHBheWxvYWRGb3JtYXR0ZXIoYm9keSksXG4gICAgfSkudGhlbihhc3luYyAocmVzcG9uc2UpID0+IHtcbiAgICAgIGNvbnN0IHIgPSByZXNwb25zZSBhcyBIdHRwUmVzcG9uc2U8VCwgRT47XG4gICAgICByLmRhdGEgPSBudWxsIGFzIHVua25vd24gYXMgVDtcbiAgICAgIHIuZXJyb3IgPSBudWxsIGFzIHVua25vd24gYXMgRTtcblxuICAgICAgY29uc3QgZGF0YSA9ICFyZXNwb25zZUZvcm1hdFxuICAgICAgICA/IHJcbiAgICAgICAgOiBhd2FpdCByZXNwb25zZVtyZXNwb25zZUZvcm1hdF0oKVxuICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHIub2spIHtcbiAgICAgICAgICAgICAgICByLmRhdGEgPSBkYXRhO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHIuZXJyb3IgPSBkYXRhO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICByLmVycm9yID0gZTtcbiAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgaWYgKGNhbmNlbFRva2VuKSB7XG4gICAgICAgIHRoaXMuYWJvcnRDb250cm9sbGVycy5kZWxldGUoY2FuY2VsVG9rZW4pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBkYXRhO1xuICAgICAgcmV0dXJuIGRhdGEuZGF0YTtcbiAgICB9KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBAdGl0bGUgQHNxdWl6L2FpLXNlcnZpY2VcbiAqIEB2ZXJzaW9uIDEuMC4wXG4gKiBAbGljZW5zZSBJU0NcbiAqIEBiYXNlVXJsIC9cbiAqIEBjb250YWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBBcGk8U2VjdXJpdHlEYXRhVHlwZSBleHRlbmRzIHVua25vd24+IHtcbiAgaHR0cDogSHR0cENsaWVudDxTZWN1cml0eURhdGFUeXBlPjtcblxuICBjb25zdHJ1Y3RvcihodHRwOiBIdHRwQ2xpZW50PFNlY3VyaXR5RGF0YVR5cGU+KSB7XG4gICAgdGhpcy5odHRwID0gaHR0cDtcbiAgfVxuXG4gIGNoYXRib3QgPSB7XG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGNoYXRib3RcbiAgICAgKiBAbmFtZSBDcmVhdGVcbiAgICAgKiBAcmVxdWVzdCBQT1NUOi9jaGF0Ym90XG4gICAgICogQHNlY3VyZVxuICAgICAqIEByZXNwb25zZSBgMjAxYCBgQWlSZXNwb25zZWAgQ3JlYXRlZFxuICAgICAqL1xuICAgIGNyZWF0ZTogKGRhdGE6IENoYXRCb3RXcml0ZSwgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zID0ge30pID0+XG4gICAgICB0aGlzLmh0dHAucmVxdWVzdDxBaVJlc3BvbnNlLCBhbnk+KHtcbiAgICAgICAgcGF0aDogYC9jaGF0Ym90YCxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogQ29udGVudFR5cGUuSnNvbixcbiAgICAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGNoYXRib3RcbiAgICAgKiBAbmFtZSBEZWxldGVcbiAgICAgKiBAcmVxdWVzdCBERUxFVEU6L2NoYXRib3Qve2lkfVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwNGAgYHZvaWRgIE5vIGNvbnRlbnRcbiAgICAgKi9cbiAgICBkZWxldGU6IChpZDogc3RyaW5nLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PHZvaWQsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2NoYXRib3QvJHtpZH1gLFxuICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICBzZWN1cmU6IHRydWUsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGNoYXRib3RcbiAgICAgKiBAbmFtZSBHZXRcbiAgICAgKiBAcmVxdWVzdCBHRVQ6L2NoYXRib3Qve2lkfVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMGAgYEFpUmVzcG9uc2VgIE9rXG4gICAgICovXG4gICAgZ2V0OiAoaWQ6IHN0cmluZywgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zID0ge30pID0+XG4gICAgICB0aGlzLmh0dHAucmVxdWVzdDxBaVJlc3BvbnNlLCBhbnk+KHtcbiAgICAgICAgcGF0aDogYC9jaGF0Ym90LyR7aWR9YCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBObyBkZXNjcmlwdGlvblxuICAgICAqXG4gICAgICogQHRhZ3MgY2hhdGJvdFxuICAgICAqIEBuYW1lIExpc3RcbiAgICAgKiBAcmVxdWVzdCBHRVQ6L2NoYXRib3RcbiAgICAgKiBAc2VjdXJlXG4gICAgICogQHJlc3BvbnNlIGAyMDBgIGBQYWdlUmVzdWx0QWlSZXNwb25zZWAgT2tcbiAgICAgKi9cbiAgICBsaXN0OiAocXVlcnk6IExpc3RQYXJhbXMsIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8UGFnZVJlc3VsdEFpUmVzcG9uc2UsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2NoYXRib3RgLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGNoYXRib3RcbiAgICAgKiBAbmFtZSBTZXRcbiAgICAgKiBAcmVxdWVzdCBQVVQ6L2NoYXRib3Qve2lkfVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMGAgYEFpUmVzcG9uc2VgIE9rXG4gICAgICovXG4gICAgc2V0OiAoaWQ6IHN0cmluZywgZGF0YTogQ2hhdEJvdFdyaXRlLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PEFpUmVzcG9uc2UsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2NoYXRib3QvJHtpZH1gLFxuICAgICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgICBib2R5OiBkYXRhLFxuICAgICAgICBzZWN1cmU6IHRydWUsXG4gICAgICAgIHR5cGU6IENvbnRlbnRUeXBlLkpzb24sXG4gICAgICAgIGZvcm1hdDogJ2pzb24nLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICB9KSxcblxuICAgIC8qKlxuICAgICAqIE5vIGRlc2NyaXB0aW9uXG4gICAgICpcbiAgICAgKiBAdGFncyBjaGF0Ym90XG4gICAgICogQG5hbWUgVXBkYXRlXG4gICAgICogQHJlcXVlc3QgUEFUQ0g6L2NoYXRib3Qve2lkfVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMGAgYEFpUmVzcG9uc2VgIE9rXG4gICAgICovXG4gICAgdXBkYXRlOiAoaWQ6IHN0cmluZywgZGF0YTogQ2hhdEJvdFBhdGNoLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PEFpUmVzcG9uc2UsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2NoYXRib3QvJHtpZH1gLFxuICAgICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogQ29udGVudFR5cGUuSnNvbixcbiAgICAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuICB9O1xuICBnZW5lcmF0aXZlID0ge1xuICAgIC8qKlxuICAgICAqIE5vIGRlc2NyaXB0aW9uXG4gICAgICpcbiAgICAgKiBAdGFncyBnZW5lcmF0aXZlXG4gICAgICogQG5hbWUgQ3JlYXRlXG4gICAgICogQHJlcXVlc3QgUE9TVDovZ2VuZXJhdGl2ZVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMWAgYEFpUmVzcG9uc2VgIENyZWF0ZWRcbiAgICAgKi9cbiAgICBjcmVhdGU6IChkYXRhOiBHZW5lcmF0aXZlV3JpdGUsIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8QWlSZXNwb25zZSwgYW55Pih7XG4gICAgICAgIHBhdGg6IGAvZ2VuZXJhdGl2ZWAsXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiBkYXRhLFxuICAgICAgICBzZWN1cmU6IHRydWUsXG4gICAgICAgIHR5cGU6IENvbnRlbnRUeXBlLkpzb24sXG4gICAgICAgIGZvcm1hdDogJ2pzb24nLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICB9KSxcblxuICAgIC8qKlxuICAgICAqIE5vIGRlc2NyaXB0aW9uXG4gICAgICpcbiAgICAgKiBAdGFncyBnZW5lcmF0aXZlXG4gICAgICogQG5hbWUgRGVsZXRlXG4gICAgICogQHJlcXVlc3QgREVMRVRFOi9nZW5lcmF0aXZlL3tpZH1cbiAgICAgKiBAc2VjdXJlXG4gICAgICogQHJlc3BvbnNlIGAyMDRgIGB2b2lkYCBObyBjb250ZW50XG4gICAgICovXG4gICAgZGVsZXRlOiAoaWQ6IHN0cmluZywgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zID0ge30pID0+XG4gICAgICB0aGlzLmh0dHAucmVxdWVzdDx2b2lkLCBhbnk+KHtcbiAgICAgICAgcGF0aDogYC9nZW5lcmF0aXZlLyR7aWR9YCxcbiAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICB9KSxcblxuICAgIC8qKlxuICAgICAqIE5vIGRlc2NyaXB0aW9uXG4gICAgICpcbiAgICAgKiBAdGFncyBnZW5lcmF0aXZlLCBleGVjdXRpb25cbiAgICAgKiBAbmFtZSBFeGVjdXRlXG4gICAgICogQHJlcXVlc3QgUE9TVDovZ2VuZXJhdGl2ZS97YWlJZH0vZXhlY3V0aW9ucy97Zmxvd0lkfVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMWAgYEdlbmVyYXRpdmVFeGVjdXRpb25Qb3N0UmVzcG9uc2VgIENyZWF0ZWRcbiAgICAgKi9cbiAgICBleGVjdXRlOiAoYWlJZDogc3RyaW5nLCBmbG93SWQ6IEdlbmVyYXRpdmVDb21tYW5kLCBkYXRhOiBHZW5lcmF0aXZlRXhlY3V0aW9uUG9zdEJvZHksIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8R2VuZXJhdGl2ZUV4ZWN1dGlvblBvc3RSZXNwb25zZSwgYW55Pih7XG4gICAgICAgIHBhdGg6IGAvZ2VuZXJhdGl2ZS8ke2FpSWR9L2V4ZWN1dGlvbnMvJHtmbG93SWR9YCxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogQ29udGVudFR5cGUuSnNvbixcbiAgICAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGdlbmVyYXRpdmVcbiAgICAgKiBAbmFtZSBHZXRcbiAgICAgKiBAcmVxdWVzdCBHRVQ6L2dlbmVyYXRpdmUve2lkfVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMGAgYEFpUmVzcG9uc2VgIE9rXG4gICAgICovXG4gICAgZ2V0OiAoaWQ6IHN0cmluZywgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zID0ge30pID0+XG4gICAgICB0aGlzLmh0dHAucmVxdWVzdDxBaVJlc3BvbnNlLCBhbnk+KHtcbiAgICAgICAgcGF0aDogYC9nZW5lcmF0aXZlLyR7aWR9YCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBObyBkZXNjcmlwdGlvblxuICAgICAqXG4gICAgICogQG5hbWUgR2V0QWxsR2VuZXJhdGl2ZVRocmVhZHNcbiAgICAgKiBAcmVxdWVzdCBHRVQ6L2dlbmVyYXRpdmUve2FpSWR9L3RocmVhZHNcbiAgICAgKiBAc2VjdXJlXG4gICAgICogQHJlc3BvbnNlIGAyMDBgIGBQYWdlUmVzdWx0VGhyZWFkYCBPa1xuICAgICAqL1xuICAgIGdldEFsbEdlbmVyYXRpdmVUaHJlYWRzOiAoeyBhaUlkLCAuLi5xdWVyeSB9OiBHZXRBbGxHZW5lcmF0aXZlVGhyZWFkc1BhcmFtcywgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zID0ge30pID0+XG4gICAgICB0aGlzLmh0dHAucmVxdWVzdDxQYWdlUmVzdWx0VGhyZWFkLCBhbnk+KHtcbiAgICAgICAgcGF0aDogYC9nZW5lcmF0aXZlLyR7YWlJZH0vdGhyZWFkc2AsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBObyBkZXNjcmlwdGlvblxuICAgICAqXG4gICAgICogQHRhZ3MgZ2VuZXJhdGl2ZSwgZXhlY3V0aW9uXG4gICAgICogQG5hbWUgR2V0RXhlY3V0aW9uT3V0cHV0XG4gICAgICogQHJlcXVlc3QgR0VUOi9nZW5lcmF0aXZlL3thaUlkfS9leGVjdXRpb25zL3tmbG93SWR9L3tleGVjdXRpb25JZH1cbiAgICAgKiBAc2VjdXJlXG4gICAgICogQHJlc3BvbnNlIGAyMDBgIGBHZXRFeGVjdXRpb25PdXRwdXRzUmVzcG9uc2VgIE9rXG4gICAgICovXG4gICAgZ2V0RXhlY3V0aW9uT3V0cHV0OiAoYWlJZDogc3RyaW5nLCBmbG93SWQ6IEdlbmVyYXRpdmVDb21tYW5kLCBleGVjdXRpb25JZDogc3RyaW5nLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PEdldEV4ZWN1dGlvbk91dHB1dHNSZXNwb25zZSwgYW55Pih7XG4gICAgICAgIHBhdGg6IGAvZ2VuZXJhdGl2ZS8ke2FpSWR9L2V4ZWN1dGlvbnMvJHtmbG93SWR9LyR7ZXhlY3V0aW9uSWR9YCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICBmb3JtYXQ6ICdqc29uJyxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBObyBkZXNjcmlwdGlvblxuICAgICAqXG4gICAgICogQHRhZ3MgZ2VuZXJhdGl2ZVxuICAgICAqIEBuYW1lIExpc3RcbiAgICAgKiBAcmVxdWVzdCBHRVQ6L2dlbmVyYXRpdmVcbiAgICAgKiBAc2VjdXJlXG4gICAgICogQHJlc3BvbnNlIGAyMDBgIGBQYWdlUmVzdWx0QWlSZXNwb25zZWAgT2tcbiAgICAgKi9cbiAgICBsaXN0OiAocXVlcnk6IExpc3RQYXJhbXMyLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PFBhZ2VSZXN1bHRBaVJlc3BvbnNlLCBhbnk+KHtcbiAgICAgICAgcGF0aDogYC9nZW5lcmF0aXZlYCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgcXVlcnk6IHF1ZXJ5LFxuICAgICAgICBzZWN1cmU6IHRydWUsXG4gICAgICAgIGZvcm1hdDogJ2pzb24nLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICB9KSxcblxuICAgIC8qKlxuICAgICAqIE5vIGRlc2NyaXB0aW9uXG4gICAgICpcbiAgICAgKiBAbmFtZSBSYXRlXG4gICAgICogQHJlcXVlc3QgUE9TVDovZ2VuZXJhdGl2ZS97YWlJZH0vdGhyZWFkcy97dGhyZWFkSWR9L3JhdGVcbiAgICAgKiBAc2VjdXJlXG4gICAgICogQHJlc3BvbnNlIGAyMDBgIGBUaHJlYWRgIE9rXG4gICAgICovXG4gICAgcmF0ZTogKGFpSWQ6IHN0cmluZywgdGhyZWFkSWQ6IHN0cmluZywgZGF0YTogUmF0ZVBheWxvYWQsIHBhcmFtczogUmVxdWVzdFBhcmFtcyA9IHt9KSA9PlxuICAgICAgdGhpcy5odHRwLnJlcXVlc3Q8VGhyZWFkLCBhbnk+KHtcbiAgICAgICAgcGF0aDogYC9nZW5lcmF0aXZlLyR7YWlJZH0vdGhyZWFkcy8ke3RocmVhZElkfS9yYXRlYCxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogQ29udGVudFR5cGUuSnNvbixcbiAgICAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogTm8gZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqIEB0YWdzIGdlbmVyYXRpdmVcbiAgICAgKiBAbmFtZSBTZXRcbiAgICAgKiBAcmVxdWVzdCBQVVQ6L2dlbmVyYXRpdmUve2lkfVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMGAgYEFpUmVzcG9uc2VgIE9rXG4gICAgICovXG4gICAgc2V0OiAoaWQ6IHN0cmluZywgZGF0YTogR2VuZXJhdGl2ZVdyaXRlLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PEFpUmVzcG9uc2UsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2dlbmVyYXRpdmUvJHtpZH1gLFxuICAgICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgICBib2R5OiBkYXRhLFxuICAgICAgICBzZWN1cmU6IHRydWUsXG4gICAgICAgIHR5cGU6IENvbnRlbnRUeXBlLkpzb24sXG4gICAgICAgIGZvcm1hdDogJ2pzb24nLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICB9KSxcblxuICAgIC8qKlxuICAgICAqIE5vIGRlc2NyaXB0aW9uXG4gICAgICpcbiAgICAgKiBAdGFncyBnZW5lcmF0aXZlXG4gICAgICogQG5hbWUgVXBkYXRlXG4gICAgICogQHJlcXVlc3QgUEFUQ0g6L2dlbmVyYXRpdmUve2lkfVxuICAgICAqIEBzZWN1cmVcbiAgICAgKiBAcmVzcG9uc2UgYDIwMGAgYEFpUmVzcG9uc2VgIE9rXG4gICAgICovXG4gICAgdXBkYXRlOiAoaWQ6IHN0cmluZywgZGF0YTogR2VuZXJhdGl2ZVBhdGNoLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMgPSB7fSkgPT5cbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0PEFpUmVzcG9uc2UsIGFueT4oe1xuICAgICAgICBwYXRoOiBgL2dlbmVyYXRpdmUvJHtpZH1gLFxuICAgICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogQ29udGVudFR5cGUuSnNvbixcbiAgICAgICAgZm9ybWF0OiAnanNvbicsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0pLFxuICB9O1xufVxuIl19 |
@@ -5,3 +5,3 @@ { | ||
"private": false, | ||
"version": "0.5.1", | ||
"version": "0.6.0", | ||
"description": "Exposes the DXP AI service as a package for consumers", | ||
@@ -21,5 +21,5 @@ "main": "dist/index.js", | ||
"jest": "^29.7.0", | ||
"@squiz/ai-service": "1.0.0" | ||
"@squiz/ai-service": "1.1.0" | ||
}, | ||
"dependencies": {} | ||
} |
Sorry, the diff of this file is not supported yet
136881
1027