@eo-sdk/client 8.15.0-rc.1 → 8.16.0-rc.2
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/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts +4 -5
- package/app/eo-framework/actions/actions/open-context-action/open-context-action.d.ts +2 -0
- package/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.d.ts +1 -0
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts +6 -5
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +3 -1
- package/app/eo-framework-core/agent/agent.service.d.ts +3 -2
- package/assets/_default/i18n/de.json +5 -3
- package/assets/_default/i18n/en.json +5 -3
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +4274 -4240
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +64 -34
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-client/inbox-state/inbox-state/inbox-state.component.js +16 -8
- package/esm2015/app/eo-client/result-state/result-state.component.js +3 -3
- package/esm2015/app/eo-framework/actions/actions/delete-content-action/delete-content-action.js +2 -3
- package/esm2015/app/eo-framework/actions/actions/open-context-action/open-context-action.js +11 -4
- package/esm2015/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.js +10 -4
- package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +2 -2
- package/esm2015/app/eo-framework/inbox-details/inbox-details.component.js +13 -11
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +3 -3
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.js +11 -4
- package/esm2015/app/eo-framework/object-form/object-form/object-form.component.js +4 -4
- package/esm2015/app/eo-framework/ui/eo-dialog/eo-dialog.component.js +1 -2
- package/esm2015/app/eo-framework-core/agent/agent.service.js +7 -5
- package/esm2015/projects/eo-sdk/core/lib/config/core-config.js +3 -1
- package/esm2015/projects/eo-sdk/core/lib/config/core-init.service.js +4 -2
- package/esm2015/projects/eo-sdk/core/lib/service/auth/auth.service.js +4 -3
- package/esm2015/projects/eo-sdk/core/lib/service/backend/backend.service.js +11 -7
- package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +6 -5
- package/esm2015/projects/eo-sdk/core/lib/service/upload/upload.service.js +8 -4
- package/esm2015/projects/eo-sdk/core/lib/util/utils.js +25 -1
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +3769 -3736
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +65 -36
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/lib/config/core-config.d.ts +1 -0
- package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +3 -1
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +4 -3
- package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts +3 -1
- package/projects/eo-sdk/core/lib/util/utils.d.ts +3 -0
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -361,12 +361,13 @@ export class DmsService {
|
|
|
361
361
|
/**
|
|
362
362
|
* Setter for Organization Objects With Read Rights
|
|
363
363
|
*
|
|
364
|
-
* @param DmsObject]
|
|
365
|
-
* @param string]
|
|
364
|
+
* @param DmsObject[] dmsObjects
|
|
365
|
+
* @param string[] orgaNames
|
|
366
|
+
* @param boolean shareChildren
|
|
366
367
|
* @returns Observable<any>
|
|
367
368
|
*/
|
|
368
|
-
setOrganizationObjectsWithReadRights(dmsObjects, orgaNames) {
|
|
369
|
-
const url =
|
|
369
|
+
setOrganizationObjectsWithReadRights(dmsObjects, orgaNames, shareChildren = true) {
|
|
370
|
+
const url = `/dms/batch/putadditionalvisibility?sharechildren=${shareChildren}`;
|
|
370
371
|
const data = {
|
|
371
372
|
organizationobjects: orgaNames,
|
|
372
373
|
objects: dmsObjects.map(o => ({
|
|
@@ -486,4 +487,4 @@ DmsService.ctorParameters = () => [
|
|
|
486
487
|
{ type: SystemService },
|
|
487
488
|
{ type: EventService }
|
|
488
489
|
];
|
|
489
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFHckQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQixvREFBZ0MsQ0FBQTtJQUNoQyw2REFBeUMsQ0FBQTtJQUN6QywrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVEOztHQUVHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFFckIsWUFBb0IsT0FBdUIsRUFDakMsYUFBNEIsRUFDNUIsWUFBMEI7UUFGaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDakMsa0JBQWEsR0FB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QUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUMxRCxXQUFXLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDOUQsWUFBWSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ2hFLFFBQVEsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUUvRCxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDdEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1lBQ3RDLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxvQkFBb0I7U0FDckQsQ0FBQztRQUVGLElBQUksZUFBZSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUV0QyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDOzs7WUE1Z0JGLFVBQVU7OztZQWpCSCxjQUFjO1lBQ2QsYUFBYTtZQUliLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RhcCwgbWVyZ2VNYXAsIGNhdGNoRXJyb3IsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtEbXNPYmplY3QsIERtc09iamVjdEF0dGFjaG1lbnR9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QubW9kZWwnO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XHJcbmltcG9ydCB7U3lzdGVtU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtL3N5c3RlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XHJcbmltcG9ydCB7RG1zT2JqZWN0SGlzdG9yeUVudHJ5fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0LWhpc3RvcnkubW9kZWwnO1xyXG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0Rtc1BhcmFtc30gZnJvbSAnLi9kbXNQYXJhbXMuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBlbnVtIFN1YnNjcmlwdGlvbk1vZGUge1xyXG4gIE9OTFlfSU5ERVhfREFUQV9DSEFOR0VEID0gJ01FVEEnLFxyXG4gIE9OTFlfRE9DVU1FTlRfQ09OVEVOVF9DSEFOR0VEID0gJ0NPTlRFTlQnLFxyXG4gIERNU19PQkpFQ1RfQ0hBTkdFRCA9ICdCT1RIJ1xyXG59XHJcblxyXG4vKipcclxuICogQ29sbGVjdGlvbiBvZiBETVMgU2VydmljZXNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERtc1NlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBhIGRtcyBvYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxyXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXHJcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cclxuICAgKiBAcGFyYW0gaW50ZW50IFVzZWQgZm9yIHNlcnZlciBzaWRlIGxvZ2dpbmcuIElmIHlvdSBwcm92aWRlIGFuIGludGVudCwgdGhlIGJhY2tlbmQgd2lsbCByZWNvZ25pemUgdGhlIHJlcXVlc3QgYW5kIGFkZCBpdCB0byBpdHMgbG9nc1xyXG4gICAqIEBwYXJhbSByZWN5Y2xlYmluIElmIHRydWUsIG9iamVjdHMgZnJvbSByZWN5Y2xlYmluIGFyZSBpbmNsdWRlZFxyXG4gICAqIEBwYXJhbSB3aXRoU3RvcmFnZUluZm8gSWYgdHJ1ZSwgc3RvcmFnZWluZm8gaXMgaW5jbHVkZWQgb24gdGhlIGRtcyBvYmplY3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cclxuICAgKi9cclxuICBnZXREbXNPYmplY3QoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgaW50ZW50Pzogc3RyaW5nLCByZWN5Y2xlYmluPzogYm9vbGVhbiwgd2l0aFN0b3JhZ2VJbmZvPzogYm9vbGVhbik6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfWA7XHJcblxyXG4gICAgY29uc3QgcSA9IHtcclxuICAgICAgYWRkaXRpb25hbHZpc2liaWxpdHk6IHRydWUsXHJcbiAgICAgIHN1YnNjcmlwdGlvbjogJ0NVUlJFTlQnLFxyXG4gICAgICByZXN1Ym1pc3Npb246ICdDVVJSRU5UJyxcclxuICAgICAgcmlnaHRzOiAnQ1VSUkVOVCcsXHJcbiAgICAgIGRhdGFtZXRhOiAndHJ1ZScsXHJcbiAgICAgIGNvbnRleHRmb2xkZXI6ICd0cnVlJyxcclxuICAgICAgdHlwZSxcclxuICAgICAgcmVjeWNsZWJpbixcclxuICAgICAgdmVyc2lvbixcclxuICAgICAgc3RvcmFnZWluZm86IHdpdGhTdG9yYWdlSW5mbyxcclxuICAgICAgJ19pbnRlbnQnOiBpbnRlbnRcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0VmlhVGVtcENhY2hlKFV0aWxzLmJ1aWxkVXJpKHVyaSwgcSkpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoVXRpbHMuY2F0Y2hTa2lwKGVyciA9PiBlcnIuc3RhdHVzID09PSA0MDQpKSxcclxuICAgICAgICBtYXAocmVzID0+IHRoaXMucmVzb2x2ZU9iamVjdFR5cGVzKG5ldyBEbXNPYmplY3QocmVzKSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZm9yIHRoZSBETVMgT2JqZWN0cyBieSBwYXJhbXNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNQYXJhbXMgcGFyYW1zXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XHJcbiAgICovXHJcbiAgZ2V0RG1zT2JqZWN0QnlQYXJhbXMocGFyYW1zOiBEbXNQYXJhbXMpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RG1zT2JqZWN0KHBhcmFtcy5pZCwgcGFyYW1zLnR5cGUsIHBhcmFtcy52ZXJzaW9uLCBwYXJhbXMuaW50ZW50LCBwYXJhbXMucmVjeWNsZWJpbiwgcGFyYW1zLndpdGhTdG9yYWdlSW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW9sdmVyIG9mIE9iamVjdCBUeXBlcyBieSBETVMgT2JqZWN0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxyXG4gICAqIEByZXR1cm5zIERtc09iamVjdFxyXG4gICAqL1xyXG4gIHJlc29sdmVPYmplY3RUeXBlcyhkbXNPYmplY3Q6IERtc09iamVjdCk6IERtc09iamVjdCB7XHJcbiAgICBkbXNPYmplY3QudHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGRtc09iamVjdC50eXBlTmFtZSk7XHJcblxyXG4gICAgaWYgKGRtc09iamVjdC5jb250ZXh0Rm9sZGVyKSB7XHJcbiAgICAgIGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRtc09iamVjdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYSBETVMgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGRtcyBvYmplY3QgdG8gYmUgZGVsZXRlZC5cclxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIG9iamVjdFxyXG4gICAqIEBwYXJhbSBoYXJkRGVsZXRlIElmIG9iamVjdCBzaG91bGQgcmVhbGx5IGJlIGRlbGV0ZWQgb3Igb25seSBwdXQgaW50byB0aGUgcmVjeWNsZSBiaW5cclxuICAgKi9cclxuICBkZWxldGVEbXNPYmplY3QoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgaGFyZERlbGV0ZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYC9kbXMvJHtpZH1gO1xyXG4gICAgY29uc3QgcGFyYW1zID0ge307XHJcbiAgICBpZiAodHlwZSAmJiB0eXBlLmxlbmd0aCA+IDApIHtcclxuICAgICAgcGFyYW1zWyd0eXBlJ10gPSB0eXBlO1xyXG4gICAgfVxyXG4gICAgaWYgKGhhcmREZWxldGUpIHtcclxuICAgICAgcGFyYW1zWydoYXJkZGVsZXRlJ10gPSBoYXJkRGVsZXRlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwoVXRpbHMuYnVpbGRVcmkodXJsLCBwYXJhbXMpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgZ2l2ZW4gZG1zIG9iamVjdFxyXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG9iamVjdC5cclxuICAgKiBAcmV0dXJucyBUaGUgY29udGV4dCBwYXRoIG9mIHRoZSBkbXMgb2JqZWN0XHJcbiAgICovXHJcbiAgZ2V0Q29udGV4dFBhdGgoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXQoYC9kbXMvJHtpZH0vY29udGV4dGApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChcclxuICAgICAgICAgIGNvbnRleHRQYXRoID0+IHtcclxuICAgICAgICAgICAgY29udGV4dFBhdGguZm9yRWFjaChwYXRoSXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgcGF0aEl0ZW0uZG1zb2JqZWN0ID0gbmV3IERtc09iamVjdChwYXRoSXRlbS5kbXNvYmplY3QpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRQYXRoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgY2hpbGRyZW4gb2YgYSBEbXNPYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RbXT5cclxuICAgKi9cclxuICBnZXRDaGlsZHJlbihkbXNPYmplY3Q6IERtc09iamVjdCk6IE9ic2VydmFibGU8RG1zT2JqZWN0W10+IHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7ZG1zT2JqZWN0LmlkfS9jaGlsZHJlbmA7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlOiBkbXNPYmplY3QudHlwZS5uYW1lfSkpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgIHJldHVybiByZXMubWFwKHIgPT4gdGhpcy5yZXNvbHZlT2JqZWN0VHlwZXMobmV3IERtc09iamVjdChyKSkpO1xyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSB2ZXJzaW9ucyBvZiBhIERtc09iamVjdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZFxyXG4gICAqIEBwYXJhbSB0eXBlXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XHJcbiAgICovXHJcbiAgZ2V0VmVyc2lvbnMoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZyk6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfS92ZXJzaW9uc2A7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlfSkpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IERtc09iamVjdChyZXMpO1xyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBhdHRhY2htZW50cyBvZiBhIERtc09iamVjdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdEF0dGFjaG1lbnRbXT5cclxuICAgKi9cclxuICBnZXRBdHRhY2htZW50cyhkbXNPYmplY3Q6IERtc09iamVjdCk6IE9ic2VydmFibGU8RG1zT2JqZWN0QXR0YWNobWVudFtdPiB7XHJcbiAgICBjb25zdCB0eXBlID0gZG1zT2JqZWN0LmNvbnRlbnQ/LnR5cGU7XHJcbiAgICBjb25zdCB2ZXJzaW9uID0gZG1zT2JqZWN0LmNvbnRlbnQ/LmxpbmtlZCA/IC0xIDogZG1zT2JqZWN0LnZlcnNpb247XHJcbiAgICBjb25zdCBjb250ZW50SUQgPSBkbXNPYmplY3QuY29udGVudD8uaWQ7XHJcbiAgICBjb25zdCB1cmkgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2NvbnRlbnRJRH0vYXR0YWNobWVudHNgLCB7dHlwZSwgdmVyc2lvbn0pO1xyXG4gICAgcmV0dXJuICFjb250ZW50SUQgPyBvZihbXSkgOiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKHVyaSkucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxyXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMuYXR0YWNobWVudGluZm8gJiYgcmVzLmF0dGFjaG1lbnRpbmZvLmF0dGFjaG1lbnRzID8gcmVzLmF0dGFjaG1lbnRpbmZvLmF0dGFjaG1lbnRzXHJcbiAgICAgICAgLm1hcCgoYSwgaSkgPT4gbmV3IERtc09iamVjdEF0dGFjaG1lbnQoT2JqZWN0LmFzc2lnbihhLCB7aWQ6IGksIHByZXZpZXdVcmk6IHRoaXMuZ2V0QXR0YWNobWVudEJ5SW5kZXgoY29udGVudElELCBpLCB0eXBlLCB2ZXJzaW9uKX0pKSkgOiBbXVxyXG4gICAgICApKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIHNwZWNpZmljIGF0dGFjaG1lbnQgb2YgYSBEbXNPYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWRcclxuICAgKiBAcGFyYW0gaW5kZXhcclxuICAgKiBAcGFyYW0gdHlwZVxyXG4gICAqIEBwYXJhbSB2ZXJzaW9uXHJcbiAgICogQHJldHVybnMgc3RyaW5nXHJcbiAgICovXHJcbiAgZ2V0QXR0YWNobWVudEJ5SW5kZXgoaWQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgdHlwZTogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVyaSA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7aWR9L2F0dGFjaG1lbnRzLyR7aW5kZXh9YCwge3R5cGUsIHZlcnNpb259KTtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArIHVyaTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyB0aGUgVVJJIGZvciBnZXR0aW5nIGEgRG1zT2JqZWN0cyBzbGlkZSAoUHJldmlldyBpbWFnZSkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxyXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXHJcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cclxuICAgKiBAcGFyYW0gc2l6ZSBUaGUgc2l6ZSBvZiB0aGUgcHJldmlldyBpbWFnZSBpbiBweFxyXG4gICAqIEByZXR1cm5zIHN0cmluZ1xyXG4gICAqL1xyXG4gIGdldFNsaWRlKGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIHNpemU/OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFV0aWxzLmJ1aWxkVXJpKFxyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArICcvZG1zLycgKyBpZCArICcvc2xpZGUnLFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICB2ZXJzaW9uLFxyXG4gICAgICAgIGhlaWdodDogc2l6ZVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBVUkkgZm9yIGdldHRpbmcgYSBEbXNPYmplY3RzIHByZXZpZXcgKFBERiByZW5kaXRpb24pLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcclxuICAgKiBAcGFyYW0gdHlwZV0gT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcclxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxyXG4gICAqIEBwYXJhbSByZW5kaXRpb24gVGFyZ2V0IHJlbmRpdGlvbiAoUERGKVxyXG4gICAqIEByZXR1cm5zIHN0cmluZ1xyXG4gICAqL1xyXG4gIGdldFByZXZpZXcoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgcmVuZGl0aW9uPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShcclxuICAgICAgdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyAnL2Rtcy8nICsgaWQgKyAnL2NvbnRlbnQnLFxyXG4gICAgICB7XHJcbiAgICAgICAgcmVuZGl0aW9uLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgdmVyc2lvblxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBkbXMgb2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxyXG4gICAqIEBwYXJhbSBpbmRleGRhdGEgT2JqZWN0IGhvbGRpbmcgdGhlIG9iamVjdHMgaW5kZXhkYXRhIChwcm9wZXJ0eTogdmFsdWUpXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxyXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIG9iamVjdCB0byBiZSB1cGRhdGVkXHJcbiAgICogQHBhcmFtIGNoZWNrcmVmZXJlbmNlcyBJZiB0aGUgcmVmZXJlbmNlIGZpZWxkcyBzaG91bGQgYmUgdmFsaWRhdGVkIG9yIG5vdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PiBUaGUgdXBkYXRlZCBkbXMgb2JqZWN0XHJcbiAgICovXHJcbiAgdXBkYXRlT2JqZWN0KGlkOiBzdHJpbmcsIGluZGV4ZGF0YTogYW55LCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBjaGVja3JlZmVyZW5jZXM/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcclxuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7aWR9YCwge3R5cGUsIHZlcnNpb24sIGNoZWNrcmVmZXJlbmNlc30pO1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZSg8YW55PntpZCwgdHlwZSwgdHlwZU5hbWU6IHR5cGV9LCB0aGlzLmJhY2tlbmQucHV0KHVybCwgaW5kZXhkYXRhKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaCB0aGUgaGlzdG9yeSAoYXVkaXQpIG9mIG9uZSBkbXMgb2JqZWN0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGRtcyBvYmplY3QgdG8gZmV0Y2ggaGlzdG9yeSBmb3JcclxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGZldGNoIGhpc3RvcnkgZm9yXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RIaXN0b3J5RW50cnlbXT4gVGhlIGhpc3Rvcnkgb2YgdGhlIGRtcyBvYmplY3RcclxuICAgKi9cclxuICBnZXRIaXN0b3J5KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPERtc09iamVjdEhpc3RvcnlFbnRyeVtdPiB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfS9hdWRpdGA7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogdHlwZX0pKS5waXBlKG1hcCgocmVzKSA9PiByZXMuYXVkaXQubWFwKChhdWRpdEVudHJ5KSA9PiBuZXcgRG1zT2JqZWN0SGlzdG9yeUVudHJ5KGF1ZGl0RW50cnkpKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzdG9yZXMgYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoZSBzZWxlY3RlZCBEbXNPYmplY3QgYnkgYWRkaW5nIHRoZSBlYXJsaWVyIHZlcnNpb25cclxuICAgKiBhcyB0aGUgbmV3IHJlY2VudCB2ZXJzaW9uLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIERNUyBvYmplY3QgaWRcclxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgdmVyc2lvbiB0byBiZSByZXN0b3JlZFxyXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBkbXMgb2JqZWN0IHR5cGVcclxuICAgKiBAcmV0dXJuXHJcbiAgICovXHJcbiAgcmVzdG9yZVZlcnNpb24oaWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCB0eXBlPzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9yZXN0b3JldmVyc2lvbi8ke2lkfS8ke3ZlcnNpb259YDtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlOiB0eXBlfSksIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaWYgZG1zT2JqZWN0IGlzIHNwZWNpZmllZCwgbG9hZCBsYXRlc3QgdmVyc2lvbiBhbmQgdHJpZ2dlciBFbmFpbyBldmVudCBETVNfT0JKRUNUX1VQREFURURcclxuICAgKlxyXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcclxuICAgKiBAcGFyYW0gcmVxdWVzdFxyXG4gICAqIEByZXR1cm5cclxuICAgKi9cclxuICB0cmlnZ2VyVXBkYXRlKGRtc09iamVjdDogRG1zT2JqZWN0LCByZXF1ZXN0OiBPYnNlcnZhYmxlPGFueT4pIHtcclxuICAgIHJldHVybiAhZG1zT2JqZWN0ID8gcmVxdWVzdCA6IHJlcXVlc3QucGlwZShcclxuICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXREbXNPYmplY3QoZG1zT2JqZWN0LmlkLCBkbXNPYmplY3QudHlwZU5hbWUpKSxcclxuICAgICAgdGFwKF9kbXNPYmplY3QgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRCwgX2Rtc09iamVjdCkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBDb250ZW50XHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHJlbW92ZUNvbnRlbnQoZG1zT2JqZWN0OiBEbXNPYmplY3QpIHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7ZG1zT2JqZWN0LmlkfS9jb250ZW50YDtcclxuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKHVyaSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBEbXNPYmplY3QuXHJcbiAgICogQHBhcmFtIHRhcmdldFR5cGUgVGFyZ2V0IG9iamVjdCB0eXBlIG5hbWVcclxuICAgKiBAcGFyYW0gZmlsZSBGaWxlIHRvIGJlIGFkZGVkIGFzIERtc09iamVjdHMgY29udGVudFxyXG4gICAqIEBwYXJhbSBpbmRleERhdGEgSW5kZXhkYXRhIGFzIHBsYWluIG9iamVjdCB3aGVyZSBrZXlzIGFyZSB0aGUgb2JqZWN0cyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMgdGhlIHZhbHVlcyB0byBiZSBhcHBsaWVkIHRvIGl0XHJcbiAgICogQHBhcmFtIHBhcmVudCBQYXJlbnQgY29udGV4dCBmb2xkZXIgb2YgdGhlIG5ldyBEbXNPYmplY3RcclxuICAgKi9cclxuICBjcmVhdGVEbXNPYmplY3QodGFyZ2V0VHlwZTogc3RyaW5nLCBmaWxlPzogRmlsZSwgaW5kZXhEYXRhPzogYW55LCBwYXJlbnQ/OiB7aWQ6IHN0cmluZywgdHlwZT86IHN0cmluZ30pOiBPYnNlcnZhYmxlPHtpZDogc3RyaW5nLCB1cmk6IHN0cmluZ30+IHtcclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgaWYgKGluZGV4RGF0YSkge1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2RhdGEnLCBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoaW5kZXhEYXRhKV0sIHtcclxuICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbidcclxuICAgICAgfSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdub2luZGV4ZGF0YScsICcnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzW10nLCBmaWxlLCBVdGlscy5lbmNvZGVGaWxlTmFtZShmaWxlLm5hbWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdXJpID0gYC9kbXMvY3JlYXRlLyR7dGFyZ2V0VHlwZX1gO1xyXG4gICAgaWYgKHBhcmVudCkge1xyXG4gICAgICB1cmkgPSBVdGlscy5idWlsZFVyaSh1cmksIHtcclxuICAgICAgICBwYXJlbnRJZDogcGFyZW50LmlkLFxyXG4gICAgICAgIHBhcmVudFR5cGU6IHBhcmVudC50eXBlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0TXVsdGlQYXJ0KHVyaSwgZm9ybURhdGEsIG51bGwsIHtoZWFkZXJzOiB7fX0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgU3Vic2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxyXG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxyXG4gICAqIEBwYXJhbSByZWNlaXZlclxyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRlbWFpbFxyXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHllbWFpbFxyXG4gICAqIEBwYXJhbSBtb2RlIFN1YnNjcmlwdGlvbk1vZGVcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBjcmVhdGVTdWJzY3JpcHRpb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgcmVjZWl2ZXIsIHNlbmRlbWFpbDogYm9vbGVhbiwgb25seWVtYWlsOiBib29sZWFuLCBtb2RlPzogU3Vic2NyaXB0aW9uTW9kZSkge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvc3Vic2NyaXB0aW9uLyR7ZG1zT2JqZWN0LmlkfWA7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XHJcbiAgICAgIHN1YmplY3QsXHJcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcclxuICAgICAgcmVjZWl2ZXIsXHJcbiAgICAgIHNlbmRlbWFpbCxcclxuICAgICAgb25seWVtYWlsLFxyXG4gICAgICBtb2RlXHJcbiAgICB9KSwge30pXHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIFJlc3VibWlzc2lvblxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcclxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcclxuICAgKiBAcGFyYW0gZHVlXHJcbiAgICogQHBhcmFtIHJlY2VpdmVyXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZEVtYWlsXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gb25seUVtYWlsXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgY3JlYXRlUmVzdWJtaXNzaW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIGR1ZSwgcmVjZWl2ZXIsIHNlbmRFbWFpbDogYm9vbGVhbiwgb25seUVtYWlsOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9yZXN1Ym1pc3Npb24vJHtkbXNPYmplY3QuaWR9YDtcclxuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcclxuICAgICAgc3ViamVjdCxcclxuICAgICAgdHlwZTogZG1zT2JqZWN0LnR5cGVOYW1lLFxyXG4gICAgICByZWNlaXZlcixcclxuICAgICAgZHVlOiBkdWUgPyBkdWUudG9JU09TdHJpbmcoKSA6ICcnLFxyXG4gICAgICBzZW5kZW1haWw6IHNlbmRFbWFpbCxcclxuICAgICAgb25seWVtYWlsOiBvbmx5RW1haWxcclxuICAgIH0pLCB7fSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWFtb3ZlIGEgU3Vic2NyaXB0aW9uIGJ5IGEgZ2l2ZW4gSWRcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzdWJzY3JpcHRpb25JZFxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcmVtb3ZlU3Vic2NyaXB0aW9uQnlJZChzdWJzY3JpcHRpb25JZCwgZG1zT2JqZWN0PzogRG1zT2JqZWN0KSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbChgL21lc3NhZ2Vwcm92aWRlci9zdWJzY3JpcHRpb24vJHtzdWJzY3JpcHRpb25JZH1gKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgYSBSZXN1Ym1pc3Npb24gYnkgYSBnaXZlbiBJZFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGl0ZW1JZFxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcmVtb3ZlUmVzdWJtaXNzaW9uc0J5SWQoaXRlbUlkLCBkbXNPYmplY3Q/OiBEbXNPYmplY3QpIHtcclxuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKGAvZG1zL3Jlc3VibWlzc2lvbi8ke2l0ZW1JZH1gKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgYSBSZXN1Ym1pc3Npb25cclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XHJcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XHJcbiAgICogQHBhcmFtIGR1ZVxyXG4gICAqIEBwYXJhbSByZWNlaXZlclxyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRFbWFpbFxyXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHlFbWFpbFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHVwZGF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWw6IGJvb2xlYW4sIG9ubHlFbWFpbDogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlUmVzdWJtaXNzaW9uc0J5SWQoZG1zT2JqZWN0LmlkKS5waXBlKG1lcmdlTWFwKCgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzdWJtaXNzaW9uKGRtc09iamVjdCwgc3ViamVjdCwgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsLCBvbmx5RW1haWwpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIGZvciBPcmdhbml6YXRpb24gT2JqZWN0cyBXaXRoIFJlYWQgUmlnaHRzXHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0XX0gZG1zT2JqZWN0c1xyXG4gICAqIEBwYXJhbSBzdHJpbmddfSBvcmdhTmFtZXNcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBzZXRPcmdhbml6YXRpb25PYmplY3RzV2l0aFJlYWRSaWdodHMoZG1zT2JqZWN0czogRG1zT2JqZWN0W10sIG9yZ2FOYW1lczogc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IHVybCA9ICcvZG1zL2JhdGNoL3B1dGFkZGl0aW9uYWx2aXNpYmlsaXR5JztcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIG9yZ2FuaXphdGlvbm9iamVjdHM6IG9yZ2FOYW1lcyxcclxuICAgICAgb2JqZWN0czogZG1zT2JqZWN0cy5tYXAobyA9PiAoe1xyXG4gICAgICAgIGl0ZW1pZDogby5pZCxcclxuICAgICAgICB0eXBlOiBvLnR5cGUubmFtZVxyXG4gICAgICB9KSlcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdHNbMF0sIHRoaXMuYmFja2VuZC5wdXQodXJsLCBkYXRhKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb3ZlIGEgRE1TIE9iamVjdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkXHJcbiAgICogQHBhcmFtIHR5cGVOYW1lXHJcbiAgICogQHBhcmFtIHBhcmVudElkXHJcbiAgICogQHBhcmFtIHBhcmVudFR5cGVOYW1lXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgbW92ZShpZCwgdHlwZU5hbWUsIHBhcmVudElkLCBwYXJlbnRUeXBlTmFtZSkge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvbG9jYXRpb24vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xyXG4gICAgICB0eXBlOiB0eXBlTmFtZSxcclxuICAgICAgcGFyZW50SWQsXHJcbiAgICAgIHBhcmVudFR5cGU6IHBhcmVudFR5cGVOYW1lXHJcbiAgICB9KSwge30pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29weSBhIERNUyBPYmplY3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZFxyXG4gICAqIEBwYXJhbSB0eXBlTmFtZVxyXG4gICAqIEBwYXJhbSBwYXJlbnRJZFxyXG4gICAqIEBwYXJhbSBwYXJlbnRUeXBlTmFtZVxyXG4gICAqIEBwYXJhbSBjcmVhdGVDb250ZW50TGlua1xyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIGNvcHkoaWQsIHR5cGVOYW1lLCBwYXJlbnRJZCwgcGFyZW50VHlwZU5hbWUsIGNyZWF0ZUNvbnRlbnRMaW5rKSB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9jb3B5LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcclxuICAgICAgdHlwZTogdHlwZU5hbWUsXHJcbiAgICAgIHBhcmVudElkLFxyXG4gICAgICBwYXJlbnRUeXBlOiBwYXJlbnRUeXBlTmFtZSxcclxuICAgICAgY3JlYXRlY29udGVudGxpbms6IGNyZWF0ZUNvbnRlbnRMaW5rXHJcbiAgICB9KSwge30pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGEgRE1TIE9iamVjdCB0byBGaW5pbGl0ZWRcclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgaXRlbVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIGZpbmFsaXplKGl0ZW06IERtc09iamVjdCkge1xyXG4gICAgY29uc3QgdXJsID0gJy9kbXMvZmluYWxpemUvJyArIGl0ZW0uaWQgKyAnP3R5cGU9JyArIGl0ZW0udHlwZU5hbWU7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGl0ZW0sIHRoaXMuYmFja2VuZC5wdXQodXJsKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgdGhlIEZpbmlsaXplZCBGbGFnIGZyb20gYSBETVMgT2JqZWN0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBkZWZpbmFsaXplKGl0ZW06IERtc09iamVjdCkge1xyXG4gICAgY29uc3QgdXJsID0gJy9kbXMvZGVmaW5hbGl6ZS8nICsgaXRlbS5pZCArICc/dHlwZT0nICsgaXRlbS50eXBlTmFtZTtcclxuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoaXRlbSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwpKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUxvY2FsQ29weU9mRE1TT2JqZWN0KGRtc09iamVjdDogRG1zT2JqZWN0KTogRG1zT2JqZWN0IHtcclxuICAgIGNvbnN0IGJhc2UgPSB7XHJcbiAgICAgIGlkOiBkbXNPYmplY3QuaWQsXHJcbiAgICAgIHRpdGxlOiBkbXNPYmplY3QudGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuZGVzY3JpcHRpb24sXHJcbiAgICAgIHZlcnNpb246IGRtc09iamVjdC52ZXJzaW9uLFxyXG4gICAgICB2ZXJzaW9uczogZG1zT2JqZWN0LnZlcnNpb25zLFxyXG4gICAgICBkYXRhOiBkbXNPYmplY3QuZGF0YSxcclxuICAgICAgdHlwZTogZG1zT2JqZWN0LnR5cGVOYW1lLFxyXG5cclxuICAgICAgYWN0aXZldmVyc2lvbjogZG1zT2JqZWN0LmlzQWN0aXZlVmVyc2lvbixcclxuICAgICAgZmluYWxpemVkOiBkbXNPYmplY3QuaXNGaW5hbGl6ZWQsXHJcbiAgICAgIGZhdm9yaXRlOiBkbXNPYmplY3QuaXNGYXZvcml0ZSxcclxuICAgICAgZm9sZGVyOiBkbXNPYmplY3QuaXNGb2xkZXIsXHJcbiAgICAgIGlzY29udGV4dGZvbGRlcjogZG1zT2JqZWN0LmlzQ29udGV4dEZvbGRlcixcclxuXHJcbiAgICAgIGNvbnRleHRmb2xkZXI6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyID8ge1xyXG4gICAgICAgIGlkOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci5pZCxcclxuICAgICAgICB0eXBlOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlTmFtZSxcclxuICAgICAgICB0aXRsZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudGl0bGUsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLmRlc2NyaXB0aW9uXHJcbiAgICAgIH0gOiBudWxsLFxyXG5cclxuICAgICAgY3JlYXRlZDogZG1zT2JqZWN0LmNyZWF0ZWQsXHJcbiAgICAgIG1vZGlmaWVkOiBkbXNPYmplY3QubW9kaWZpZWQsXHJcblxyXG4gICAgICBsb2NrOiAhZG1zT2JqZWN0LmxvY2sgPyAnTk9UX0xPQ0tFRCcgOiBkbXNPYmplY3QubG9jay5ieS5tZSA/ICdMT0NLRURfQllfU0VTU0lPTl9VU0VSJyA6ICdMT0NLRURfQllfT1RIRVJfVVNFUicsXHJcbiAgICAgIGxvY2tpbmZvOiBkbXNPYmplY3QubG9jayA/IHt1c2VybmFtZTogZG1zT2JqZWN0LmxvY2suYnkubmFtZSwgdXNlcnRpdGxlOiBkbXNPYmplY3QubG9jay5ieS5sYWJlbCwgdGltZTogZG1zT2JqZWN0LmxvY2sub259IDogbnVsbCxcclxuXHJcbiAgICAgIHJpZ2h0czogW3tcclxuICAgICAgICBwcml2aWxlZ2VzOiB7XHJcbiAgICAgICAgICBzZWxlY3Q6IGRtc09iamVjdC5yaWdodHMuc2VsZWN0LFxyXG4gICAgICAgICAgZWRpdDogZG1zT2JqZWN0LnJpZ2h0cy5lZGl0LFxyXG4gICAgICAgICAgZGVsZXRlOiBkbXNPYmplY3QucmlnaHRzLmRlbGV0ZSxcclxuICAgICAgICAgIGZpbmFsaXplOiBkbXNPYmplY3QucmlnaHRzLmZpbmFsaXplLFxyXG4gICAgICAgICAgcmVjeWNsZTogZG1zT2JqZWN0LnJpZ2h0cy5yZWN5Y2xlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XSxcclxuXHJcbiAgICAgIGNvbnRlbnRpZDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5pZCA6IG51bGwsXHJcbiAgICAgIGNvbnRlbnR0eXBlOiBkbXNPYmplY3QuY29udGVudCA/IGRtc09iamVjdC5jb250ZW50LnR5cGUgOiBudWxsLFxyXG4gICAgICBjb250ZW50Y291bnQ6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQuY291bnQgOiBudWxsLFxyXG4gICAgICBjb250ZW50czogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb250ZW50cyA6IG51bGwsXHJcblxyXG4gICAgICBzdWJzY3JpcHRpb25zOiBkbXNPYmplY3Quc3Vic2NyaXB0aW9ucyxcclxuICAgICAgcmVzdWJtaXNzaW9uczogZG1zT2JqZWN0LnJlc3VibWlzc2lvbnMsXHJcbiAgICAgIGFkZGl0aW9uYWx2aXNpYmlsaXR5OiBkbXNPYmplY3QuYWRkaXRpb25hbHZpc2liaWxpdHlcclxuICAgIH07XHJcblxyXG4gICAgbGV0IGNvcGllZERtc09iamVjdCA9IG5ldyBEbXNPYmplY3QoYmFzZSk7XHJcbiAgICBjb3BpZWREbXNPYmplY3QudHlwZSA9IGRtc09iamVjdC50eXBlO1xyXG5cclxuICAgIHJldHVybiBjb3BpZWREbXNPYmplY3Q7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
490
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFHckQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQixvREFBZ0MsQ0FBQTtJQUNoQyw2REFBeUMsQ0FBQTtJQUN6QywrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVEOztHQUVHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFFckIsWUFBb0IsT0FBdUIsRUFDakMsYUFBNEIsRUFDNUIsWUFBMEI7UUFGaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDakMsa0JBQWEsR0FB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QUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDMUQsV0FBVyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzlELFlBQVksRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNoRSxRQUFRLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFFL0QsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1lBQ3RDLGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtZQUN0QyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsb0JBQW9CO1NBQ3JELENBQUM7UUFFRixJQUFJLGVBQWUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxlQUFlLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFFdEMsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQzs7O1lBN2dCRixVQUFVOzs7WUFqQkgsY0FBYztZQUNkLGFBQWE7WUFJYixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0YXAsIG1lcmdlTWFwLCBjYXRjaEVycm9yLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7RG1zT2JqZWN0LCBEbXNPYmplY3RBdHRhY2htZW50fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xyXG5pbXBvcnQge0Rtc09iamVjdEhpc3RvcnlFbnRyeX0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC1oaXN0b3J5Lm1vZGVsJztcclxuaW1wb3J0IHtFbmFpb0V2ZW50fSBmcm9tICcuLi9ldmVudHMvZXZlbnRzJztcclxuaW1wb3J0IHtFdmVudFNlcnZpY2V9IGZyb20gJy4uL2V2ZW50cy9ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtEbXNQYXJhbXN9IGZyb20gJy4vZG1zUGFyYW1zLmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgZW51bSBTdWJzY3JpcHRpb25Nb2RlIHtcclxuICBPTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCA9ICdNRVRBJyxcclxuICBPTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCA9ICdDT05URU5UJyxcclxuICBETVNfT0JKRUNUX0NIQU5HRUQgPSAnQk9USCdcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3Rpb24gb2YgRE1TIFNlcnZpY2VzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEbXNTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBkbXMgb2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcclxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxyXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXHJcbiAgICogQHBhcmFtIGludGVudCBVc2VkIGZvciBzZXJ2ZXIgc2lkZSBsb2dnaW5nLiBJZiB5b3UgcHJvdmlkZSBhbiBpbnRlbnQsIHRoZSBiYWNrZW5kIHdpbGwgcmVjb2duaXplIHRoZSByZXF1ZXN0IGFuZCBhZGQgaXQgdG8gaXRzIGxvZ3NcclxuICAgKiBAcGFyYW0gcmVjeWNsZWJpbiBJZiB0cnVlLCBvYmplY3RzIGZyb20gcmVjeWNsZWJpbiBhcmUgaW5jbHVkZWRcclxuICAgKiBAcGFyYW0gd2l0aFN0b3JhZ2VJbmZvIElmIHRydWUsIHN0b3JhZ2VpbmZvIGlzIGluY2x1ZGVkIG9uIHRoZSBkbXMgb2JqZWN0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XHJcbiAgICovXHJcbiAgZ2V0RG1zT2JqZWN0KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIGludGVudD86IHN0cmluZywgcmVjeWNsZWJpbj86IGJvb2xlYW4sIHdpdGhTdG9yYWdlSW5mbz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH1gO1xyXG5cclxuICAgIGNvbnN0IHEgPSB7XHJcbiAgICAgIGFkZGl0aW9uYWx2aXNpYmlsaXR5OiB0cnVlLFxyXG4gICAgICBzdWJzY3JpcHRpb246ICdDVVJSRU5UJyxcclxuICAgICAgcmVzdWJtaXNzaW9uOiAnQ1VSUkVOVCcsXHJcbiAgICAgIHJpZ2h0czogJ0NVUlJFTlQnLFxyXG4gICAgICBkYXRhbWV0YTogJ3RydWUnLFxyXG4gICAgICBjb250ZXh0Zm9sZGVyOiAndHJ1ZScsXHJcbiAgICAgIHR5cGUsXHJcbiAgICAgIHJlY3ljbGViaW4sXHJcbiAgICAgIHZlcnNpb24sXHJcbiAgICAgIHN0b3JhZ2VpbmZvOiB3aXRoU3RvcmFnZUluZm8sXHJcbiAgICAgICdfaW50ZW50JzogaW50ZW50XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldFZpYVRlbXBDYWNoZShVdGlscy5idWlsZFVyaSh1cmksIHEpKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFV0aWxzLmNhdGNoU2tpcChlcnIgPT4gZXJyLnN0YXR1cyA9PT0gNDA0KSksXHJcbiAgICAgICAgbWFwKHJlcyA9PiB0aGlzLnJlc29sdmVPYmplY3RUeXBlcyhuZXcgRG1zT2JqZWN0KHJlcykpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciB0aGUgRE1TIE9iamVjdHMgYnkgcGFyYW1zXHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zUGFyYW1zIHBhcmFtc1xyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PlxyXG4gICAqL1xyXG4gIGdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLmdldERtc09iamVjdChwYXJhbXMuaWQsIHBhcmFtcy50eXBlLCBwYXJhbXMudmVyc2lvbiwgcGFyYW1zLmludGVudCwgcGFyYW1zLnJlY3ljbGViaW4sIHBhcmFtcy53aXRoU3RvcmFnZUluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVvbHZlciBvZiBPYmplY3QgVHlwZXMgYnkgRE1TIE9iamVjdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcclxuICAgKiBAcmV0dXJucyBEbXNPYmplY3RcclxuICAgKi9cclxuICByZXNvbHZlT2JqZWN0VHlwZXMoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBEbXNPYmplY3Qge1xyXG4gICAgZG1zT2JqZWN0LnR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShkbXNPYmplY3QudHlwZU5hbWUpO1xyXG5cclxuICAgIGlmIChkbXNPYmplY3QuY29udGV4dEZvbGRlcikge1xyXG4gICAgICBkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudHlwZU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkbXNPYmplY3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgRE1TIG9iamVjdC5cclxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuXHJcbiAgICogQHBhcmFtIHR5cGUgVHlwZSBvZiBvYmplY3RcclxuICAgKiBAcGFyYW0gaGFyZERlbGV0ZSBJZiBvYmplY3Qgc2hvdWxkIHJlYWxseSBiZSBkZWxldGVkIG9yIG9ubHkgcHV0IGludG8gdGhlIHJlY3ljbGUgYmluXHJcbiAgICovXHJcbiAgZGVsZXRlRG1zT2JqZWN0KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIGhhcmREZWxldGU/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAvZG1zLyR7aWR9YDtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xyXG4gICAgaWYgKHR5cGUgJiYgdHlwZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHBhcmFtc1sndHlwZSddID0gdHlwZTtcclxuICAgIH1cclxuICAgIGlmIChoYXJkRGVsZXRlKSB7XHJcbiAgICAgIHBhcmFtc1snaGFyZGRlbGV0ZSddID0gaGFyZERlbGV0ZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZGVsKFV0aWxzLmJ1aWxkVXJpKHVybCwgcGFyYW1zKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBjb250ZXh0IHBhdGggb2YgdGhlIGdpdmVuIGRtcyBvYmplY3RcclxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBvYmplY3QuXHJcbiAgICogQHJldHVybnMgVGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgZG1zIG9iamVjdFxyXG4gICAqL1xyXG4gIGdldENvbnRleHRQYXRoKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0KGAvZG1zLyR7aWR9L2NvbnRleHRgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoXHJcbiAgICAgICAgICBjb250ZXh0UGF0aCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnRleHRQYXRoLmZvckVhY2gocGF0aEl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgIHBhdGhJdGVtLmRtc29iamVjdCA9IG5ldyBEbXNPYmplY3QocGF0aEl0ZW0uZG1zb2JqZWN0KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0UGF0aDtcclxuICAgICAgICAgIH1cclxuICAgICAgICApKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGNoaWxkcmVuIG9mIGEgRG1zT2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRtc09iamVjdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0W10+XHJcbiAgICovXHJcbiAgZ2V0Q2hpbGRyZW4oZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBPYnNlcnZhYmxlPERtc09iamVjdFtdPiB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2Rtc09iamVjdC5pZH0vY2hpbGRyZW5gO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogZG1zT2JqZWN0LnR5cGUubmFtZX0pKS5waXBlKFxyXG4gICAgICBtYXAoKHJlczogYW55W10pID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzLm1hcChyID0+IHRoaXMucmVzb2x2ZU9iamVjdFR5cGVzKG5ldyBEbXNPYmplY3QocikpKTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgdmVyc2lvbnMgb2YgYSBEbXNPYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWRcclxuICAgKiBAcGFyYW0gdHlwZVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PlxyXG4gICAqL1xyXG4gIGdldFZlcnNpb25zKGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH0vdmVyc2lvbnNgO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZX0pKS5waXBlKFxyXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEbXNPYmplY3QocmVzKTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgYXR0YWNobWVudHMgb2YgYSBEbXNPYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RBdHRhY2htZW50W10+XHJcbiAgICovXHJcbiAgZ2V0QXR0YWNobWVudHMoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBPYnNlcnZhYmxlPERtc09iamVjdEF0dGFjaG1lbnRbXT4ge1xyXG4gICAgY29uc3QgdHlwZSA9IGRtc09iamVjdC5jb250ZW50Py50eXBlO1xyXG4gICAgY29uc3QgdmVyc2lvbiA9IGRtc09iamVjdC5jb250ZW50Py5saW5rZWQgPyAtMSA6IGRtc09iamVjdC52ZXJzaW9uO1xyXG4gICAgY29uc3QgY29udGVudElEID0gZG1zT2JqZWN0LmNvbnRlbnQ/LmlkO1xyXG4gICAgY29uc3QgdXJpID0gVXRpbHMuYnVpbGRVcmkoYC9kbXMvJHtjb250ZW50SUR9L2F0dGFjaG1lbnRzYCwge3R5cGUsIHZlcnNpb259KTtcclxuICAgIHJldHVybiAhY29udGVudElEID8gb2YoW10pIDogdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZSh1cmkpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoVXRpbHMuY2F0Y2hTa2lwKGVyciA9PiBlcnIuc3RhdHVzID09PSA0MDQpKSxcclxuICAgICAgbWFwKChyZXM6IGFueSkgPT4gcmVzLmF0dGFjaG1lbnRpbmZvICYmIHJlcy5hdHRhY2htZW50aW5mby5hdHRhY2htZW50cyA/IHJlcy5hdHRhY2htZW50aW5mby5hdHRhY2htZW50c1xyXG4gICAgICAgIC5tYXAoKGEsIGkpID0+IG5ldyBEbXNPYmplY3RBdHRhY2htZW50KE9iamVjdC5hc3NpZ24oYSwge2lkOiBpLCBwcmV2aWV3VXJpOiB0aGlzLmdldEF0dGFjaG1lbnRCeUluZGV4KGNvbnRlbnRJRCwgaSwgdHlwZSwgdmVyc2lvbil9KSkpIDogW11cclxuICAgICAgKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBzcGVjaWZpYyBhdHRhY2htZW50IG9mIGEgRG1zT2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkXHJcbiAgICogQHBhcmFtIGluZGV4XHJcbiAgICogQHBhcmFtIHR5cGVcclxuICAgKiBAcGFyYW0gdmVyc2lvblxyXG4gICAqIEByZXR1cm5zIHN0cmluZ1xyXG4gICAqL1xyXG4gIGdldEF0dGFjaG1lbnRCeUluZGV4KGlkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIHR5cGU6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCB1cmkgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2lkfS9hdHRhY2htZW50cy8ke2luZGV4fWAsIHt0eXBlLCB2ZXJzaW9ufSk7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyB1cmk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgdGhlIFVSSSBmb3IgZ2V0dGluZyBhIERtc09iamVjdHMgc2xpZGUgKFByZXZpZXcgaW1hZ2UpLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcclxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxyXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXHJcbiAgICogQHBhcmFtIHNpemUgVGhlIHNpemUgb2YgdGhlIHByZXZpZXcgaW1hZ2UgaW4gcHhcclxuICAgKiBAcmV0dXJucyBzdHJpbmdcclxuICAgKi9cclxuICBnZXRTbGlkZShpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBzaXplPzogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShcclxuICAgICAgdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyAnL2Rtcy8nICsgaWQgKyAnL3NsaWRlJyxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgdmVyc2lvbixcclxuICAgICAgICBoZWlnaHQ6IHNpemVcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyB0aGUgVVJJIGZvciBnZXR0aW5nIGEgRG1zT2JqZWN0cyBwcmV2aWV3IChQREYgcmVuZGl0aW9uKS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBPYmplY3RzIGlkXHJcbiAgICogQHBhcmFtIHR5cGVdIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXHJcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cclxuICAgKiBAcGFyYW0gcmVuZGl0aW9uIFRhcmdldCByZW5kaXRpb24gKFBERilcclxuICAgKiBAcmV0dXJucyBzdHJpbmdcclxuICAgKi9cclxuICBnZXRQcmV2aWV3KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIHJlbmRpdGlvbj86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gVXRpbHMuYnVpbGRVcmkoXHJcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgJy9kbXMvJyArIGlkICsgJy9jb250ZW50JyxcclxuICAgICAge1xyXG4gICAgICAgIHJlbmRpdGlvbixcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHZlcnNpb25cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZG1zIG9iamVjdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcclxuICAgKiBAcGFyYW0gaW5kZXhkYXRhIE9iamVjdCBob2xkaW5nIHRoZSBvYmplY3RzIGluZGV4ZGF0YSAocHJvcGVydHk6IHZhbHVlKVxyXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBvYmplY3QgdHlwZSBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcclxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxyXG4gICAqIEBwYXJhbSBjaGVja3JlZmVyZW5jZXMgSWYgdGhlIHJlZmVyZW5jZSBmaWVsZHMgc2hvdWxkIGJlIHZhbGlkYXRlZCBvciBub3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD4gVGhlIHVwZGF0ZWQgZG1zIG9iamVjdFxyXG4gICAqL1xyXG4gIHVwZGF0ZU9iamVjdChpZDogc3RyaW5nLCBpbmRleGRhdGE6IGFueSwgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgY2hlY2tyZWZlcmVuY2VzPzogYm9vbGVhbik6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XHJcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2lkfWAsIHt0eXBlLCB2ZXJzaW9uLCBjaGVja3JlZmVyZW5jZXN9KTtcclxuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoPGFueT57aWQsIHR5cGUsIHR5cGVOYW1lOiB0eXBlfSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwsIGluZGV4ZGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2ggdGhlIGhpc3RvcnkgKGF1ZGl0KSBvZiBvbmUgZG1zIG9iamVjdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGZldGNoIGhpc3RvcnkgZm9yXHJcbiAgICogQHBhcmFtIHR5cGUgVHlwZSBvZiB0aGUgZG1zIG9iamVjdCB0byBmZXRjaCBoaXN0b3J5IGZvclxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0SGlzdG9yeUVudHJ5W10+IFRoZSBoaXN0b3J5IG9mIHRoZSBkbXMgb2JqZWN0XHJcbiAgICovXHJcbiAgZ2V0SGlzdG9yeShpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxEbXNPYmplY3RIaXN0b3J5RW50cnlbXT4ge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH0vYXVkaXRgO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRKc29uKFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGU6IHR5cGV9KSkucGlwZShtYXAoKHJlcykgPT4gcmVzLmF1ZGl0Lm1hcCgoYXVkaXRFbnRyeSkgPT4gbmV3IERtc09iamVjdEhpc3RvcnlFbnRyeShhdWRpdEVudHJ5KSkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc3RvcmVzIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGUgc2VsZWN0ZWQgRG1zT2JqZWN0IGJ5IGFkZGluZyB0aGUgZWFybGllciB2ZXJzaW9uXHJcbiAgICogYXMgdGhlIG5ldyByZWNlbnQgdmVyc2lvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBETVMgb2JqZWN0IGlkXHJcbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIHZlcnNpb24gdG8gYmUgcmVzdG9yZWRcclxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZG1zIG9iamVjdCB0eXBlXHJcbiAgICogQHJldHVyblxyXG4gICAqL1xyXG4gIHJlc3RvcmVWZXJzaW9uKGlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgdHlwZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdG9yZXZlcnNpb24vJHtpZH0vJHt2ZXJzaW9ufWA7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogdHlwZX0pLCBudWxsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGlmIGRtc09iamVjdCBpcyBzcGVjaWZpZWQsIGxvYWQgbGF0ZXN0IHZlcnNpb24gYW5kIHRyaWdnZXIgRW5haW8gZXZlbnQgRE1TX09CSkVDVF9VUERBVEVEXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XHJcbiAgICogQHBhcmFtIHJlcXVlc3RcclxuICAgKiBAcmV0dXJuXHJcbiAgICovXHJcbiAgdHJpZ2dlclVwZGF0ZShkbXNPYmplY3Q6IERtc09iamVjdCwgcmVxdWVzdDogT2JzZXJ2YWJsZTxhbnk+KSB7XHJcbiAgICByZXR1cm4gIWRtc09iamVjdCA/IHJlcXVlc3QgOiByZXF1ZXN0LnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0RG1zT2JqZWN0KGRtc09iamVjdC5pZCwgZG1zT2JqZWN0LnR5cGVOYW1lKSksXHJcbiAgICAgIHRhcChfZG1zT2JqZWN0ID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQsIF9kbXNPYmplY3QpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgQ29udGVudFxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICByZW1vdmVDb250ZW50KGRtc09iamVjdDogRG1zT2JqZWN0KSB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2Rtc09iamVjdC5pZH0vY29udGVudGA7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbCh1cmkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgRG1zT2JqZWN0LlxyXG4gICAqIEBwYXJhbSB0YXJnZXRUeXBlIFRhcmdldCBvYmplY3QgdHlwZSBuYW1lXHJcbiAgICogQHBhcmFtIGZpbGUgRmlsZSB0byBiZSBhZGRlZCBhcyBEbXNPYmplY3RzIGNvbnRlbnRcclxuICAgKiBAcGFyYW0gaW5kZXhEYXRhIEluZGV4ZGF0YSBhcyBwbGFpbiBvYmplY3Qgd2hlcmUga2V5cyBhcmUgdGhlIG9iamVjdHMgcHJvcGVydGllcyBhbmQgdmFsdWVzIHRoZSB2YWx1ZXMgdG8gYmUgYXBwbGllZCB0byBpdFxyXG4gICAqIEBwYXJhbSBwYXJlbnQgUGFyZW50IGNvbnRleHQgZm9sZGVyIG9mIHRoZSBuZXcgRG1zT2JqZWN0XHJcbiAgICovXHJcbiAgY3JlYXRlRG1zT2JqZWN0KHRhcmdldFR5cGU6IHN0cmluZywgZmlsZT86IEZpbGUsIGluZGV4RGF0YT86IGFueSwgcGFyZW50Pzoge2lkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmd9KTogT2JzZXJ2YWJsZTx7aWQ6IHN0cmluZywgdXJpOiBzdHJpbmd9PiB7XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGlmIChpbmRleERhdGEpIHtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdkYXRhJywgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KGluZGV4RGF0YSldLCB7XHJcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgIH0pKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnbm9pbmRleGRhdGEnLCAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlc1tdJywgZmlsZSwgVXRpbHMuZW5jb2RlRmlsZU5hbWUoZmlsZS5uYW1lKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHVyaSA9IGAvZG1zL2NyZWF0ZS8ke3RhcmdldFR5cGV9YDtcclxuICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgdXJpID0gVXRpbHMuYnVpbGRVcmkodXJpLCB7XHJcbiAgICAgICAgcGFyZW50SWQ6IHBhcmVudC5pZCxcclxuICAgICAgICBwYXJlbnRUeXBlOiBwYXJlbnQudHlwZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdE11bHRpUGFydCh1cmksIGZvcm1EYXRhLCBudWxsLCB7aGVhZGVyczoge319KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIFN1YnNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcclxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcclxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kZW1haWxcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5ZW1haWxcclxuICAgKiBAcGFyYW0gbW9kZSBTdWJzY3JpcHRpb25Nb2RlXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgY3JlYXRlU3Vic2NyaXB0aW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIHJlY2VpdmVyLCBzZW5kZW1haWw6IGJvb2xlYW4sIG9ubHllbWFpbDogYm9vbGVhbiwgbW9kZT86IFN1YnNjcmlwdGlvbk1vZGUpIHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3N1YnNjcmlwdGlvbi8ke2Rtc09iamVjdC5pZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xyXG4gICAgICBzdWJqZWN0LFxyXG4gICAgICB0eXBlOiBkbXNPYmplY3QudHlwZU5hbWUsXHJcbiAgICAgIHJlY2VpdmVyLFxyXG4gICAgICBzZW5kZW1haWwsXHJcbiAgICAgIG9ubHllbWFpbCxcclxuICAgICAgbW9kZVxyXG4gICAgfSksIHt9KVxyXG4gICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBSZXN1Ym1pc3Npb25cclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XHJcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XHJcbiAgICogQHBhcmFtIGR1ZVxyXG4gICAqIEBwYXJhbSByZWNlaXZlclxyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRFbWFpbFxyXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHlFbWFpbFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIGNyZWF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWw6IGJvb2xlYW4sIG9ubHlFbWFpbDogYm9vbGVhbikge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdWJtaXNzaW9uLyR7ZG1zT2JqZWN0LmlkfWA7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XHJcbiAgICAgIHN1YmplY3QsXHJcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcclxuICAgICAgcmVjZWl2ZXIsXHJcbiAgICAgIGR1ZTogZHVlID8gZHVlLnRvSVNPU3RyaW5nKCkgOiAnJyxcclxuICAgICAgc2VuZGVtYWlsOiBzZW5kRW1haWwsXHJcbiAgICAgIG9ubHllbWFpbDogb25seUVtYWlsXHJcbiAgICB9KSwge30pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVhbW92ZSBhIFN1YnNjcmlwdGlvbiBieSBhIGdpdmVuIElkXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWRcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHJlbW92ZVN1YnNjcmlwdGlvbkJ5SWQoc3Vic2NyaXB0aW9uSWQsIGRtc09iamVjdD86IERtc09iamVjdCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5kZWwoYC9tZXNzYWdlcHJvdmlkZXIvc3Vic2NyaXB0aW9uLyR7c3Vic2NyaXB0aW9uSWR9YCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgUmVzdWJtaXNzaW9uIGJ5IGEgZ2l2ZW4gSWRcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpdGVtSWRcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHJlbW92ZVJlc3VibWlzc2lvbnNCeUlkKGl0ZW1JZCwgZG1zT2JqZWN0PzogRG1zT2JqZWN0KSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbChgL2Rtcy9yZXN1Ym1pc3Npb24vJHtpdGVtSWR9YCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGEgUmVzdWJtaXNzaW9uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxyXG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxyXG4gICAqIEBwYXJhbSBkdWVcclxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kRW1haWxcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5RW1haWxcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICB1cGRhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsOiBib29sZWFuLCBvbmx5RW1haWw6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiB0aGlzLnJlbW92ZVJlc3VibWlzc2lvbnNCeUlkKGRtc09iamVjdC5pZCkucGlwZShtZXJnZU1hcCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3QsIHN1YmplY3QsIGR1ZSwgcmVjZWl2ZXIsIHNlbmRFbWFpbCwgb25seUVtYWlsKTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHRlciBmb3IgT3JnYW5pemF0aW9uIE9iamVjdHMgV2l0aCBSZWFkIFJpZ2h0c1xyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdFtdIGRtc09iamVjdHNcclxuICAgKiBAcGFyYW0gc3RyaW5nW10gb3JnYU5hbWVzXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2hhcmVDaGlsZHJlblxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHNldE9yZ2FuaXphdGlvbk9iamVjdHNXaXRoUmVhZFJpZ2h0cyhkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgb3JnYU5hbWVzOiBzdHJpbmdbXSwgc2hhcmVDaGlsZHJlbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHVybCA9IGAvZG1zL2JhdGNoL3B1dGFkZGl0aW9uYWx2aXNpYmlsaXR5P3NoYXJlY2hpbGRyZW49JHtzaGFyZUNoaWxkcmVufWA7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBvcmdhbml6YXRpb25vYmplY3RzOiBvcmdhTmFtZXMsXHJcbiAgICAgIG9iamVjdHM6IGRtc09iamVjdHMubWFwKG8gPT4gKHtcclxuICAgICAgICBpdGVtaWQ6IG8uaWQsXHJcbiAgICAgICAgdHlwZTogby50eXBlLm5hbWVcclxuICAgICAgfSkpXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3RzWzBdLCB0aGlzLmJhY2tlbmQucHV0KHVybCwgZGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW92ZSBhIERNUyBPYmplY3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZFxyXG4gICAqIEBwYXJhbSB0eXBlTmFtZVxyXG4gICAqIEBwYXJhbSBwYXJlbnRJZFxyXG4gICAqIEBwYXJhbSBwYXJlbnRUeXBlTmFtZVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIG1vdmUoaWQsIHR5cGVOYW1lLCBwYXJlbnRJZCwgcGFyZW50VHlwZU5hbWUpIHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zL2xvY2F0aW9uLyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcclxuICAgICAgdHlwZTogdHlwZU5hbWUsXHJcbiAgICAgIHBhcmVudElkLFxyXG4gICAgICBwYXJlbnRUeXBlOiBwYXJlbnRUeXBlTmFtZVxyXG4gICAgfSksIHt9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvcHkgYSBETVMgT2JqZWN0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWRcclxuICAgKiBAcGFyYW0gdHlwZU5hbWVcclxuICAgKiBAcGFyYW0gcGFyZW50SWRcclxuICAgKiBAcGFyYW0gcGFyZW50VHlwZU5hbWVcclxuICAgKiBAcGFyYW0gY3JlYXRlQ29udGVudExpbmtcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBjb3B5KGlkLCB0eXBlTmFtZSwgcGFyZW50SWQsIHBhcmVudFR5cGVOYW1lLCBjcmVhdGVDb250ZW50TGluaykge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvY29weS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XHJcbiAgICAgIHR5cGU6IHR5cGVOYW1lLFxyXG4gICAgICBwYXJlbnRJZCxcclxuICAgICAgcGFyZW50VHlwZTogcGFyZW50VHlwZU5hbWUsXHJcbiAgICAgIGNyZWF0ZWNvbnRlbnRsaW5rOiBjcmVhdGVDb250ZW50TGlua1xyXG4gICAgfSksIHt9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBhIERNUyBPYmplY3QgdG8gRmluaWxpdGVkXHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcclxuICAgIGNvbnN0IHVybCA9ICcvZG1zL2ZpbmFsaXplLycgKyBpdGVtLmlkICsgJz90eXBlPScgKyBpdGVtLnR5cGVOYW1lO1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShpdGVtLCB0aGlzLmJhY2tlbmQucHV0KHVybCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoZSBGaW5pbGl6ZWQgRmxhZyBmcm9tIGEgRE1TIE9iamVjdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBpdGVtXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgZGVmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcclxuICAgIGNvbnN0IHVybCA9ICcvZG1zL2RlZmluYWxpemUvJyArIGl0ZW0uaWQgKyAnP3R5cGU9JyArIGl0ZW0udHlwZU5hbWU7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGl0ZW0sIHRoaXMuYmFja2VuZC5wdXQodXJsKSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVMb2NhbENvcHlPZkRNU09iamVjdChkbXNPYmplY3Q6IERtc09iamVjdCk6IERtc09iamVjdCB7XHJcbiAgICBjb25zdCBiYXNlID0ge1xyXG4gICAgICBpZDogZG1zT2JqZWN0LmlkLFxyXG4gICAgICB0aXRsZTogZG1zT2JqZWN0LnRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogZG1zT2JqZWN0LmRlc2NyaXB0aW9uLFxyXG4gICAgICB2ZXJzaW9uOiBkbXNPYmplY3QudmVyc2lvbixcclxuICAgICAgdmVyc2lvbnM6IGRtc09iamVjdC52ZXJzaW9ucyxcclxuICAgICAgZGF0YTogZG1zT2JqZWN0LmRhdGEsXHJcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcclxuXHJcbiAgICAgIGFjdGl2ZXZlcnNpb246IGRtc09iamVjdC5pc0FjdGl2ZVZlcnNpb24sXHJcbiAgICAgIGZpbmFsaXplZDogZG1zT2JqZWN0LmlzRmluYWxpemVkLFxyXG4gICAgICBmYXZvcml0ZTogZG1zT2JqZWN0LmlzRmF2b3JpdGUsXHJcbiAgICAgIGZvbGRlcjogZG1zT2JqZWN0LmlzRm9sZGVyLFxyXG4gICAgICBpc2NvbnRleHRmb2xkZXI6IGRtc09iamVjdC5pc0NvbnRleHRGb2xkZXIsXHJcblxyXG4gICAgICBjb250ZXh0Zm9sZGVyOiBkbXNPYmplY3QuY29udGV4dEZvbGRlciA/IHtcclxuICAgICAgICBpZDogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuaWQsXHJcbiAgICAgICAgdHlwZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudHlwZU5hbWUsXHJcbiAgICAgICAgdGl0bGU6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnRpdGxlLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci5kZXNjcmlwdGlvblxyXG4gICAgICB9IDogbnVsbCxcclxuXHJcbiAgICAgIGNyZWF0ZWQ6IGRtc09iamVjdC5jcmVhdGVkLFxyXG4gICAgICBtb2RpZmllZDogZG1zT2JqZWN0Lm1vZGlmaWVkLFxyXG5cclxuICAgICAgbG9jazogIWRtc09iamVjdC5sb2NrID8gJ05PVF9MT0NLRUQnIDogZG1zT2JqZWN0LmxvY2suYnkubWUgPyAnTE9DS0VEX0JZX1NFU1NJT05fVVNFUicgOiAnTE9DS0VEX0JZX09USEVSX1VTRVInLFxyXG4gICAgICBsb2NraW5mbzogZG1zT2JqZWN0LmxvY2sgPyB7dXNlcm5hbWU6IGRtc09iamVjdC5sb2NrLmJ5Lm5hbWUsIHVzZXJ0aXRsZTogZG1zT2JqZWN0LmxvY2suYnkubGFiZWwsIHRpbWU6IGRtc09iamVjdC5sb2NrLm9ufSA6IG51bGwsXHJcblxyXG4gICAgICByaWdodHM6IFt7XHJcbiAgICAgICAgcHJpdmlsZWdlczoge1xyXG4gICAgICAgICAgc2VsZWN0OiBkbXNPYmplY3QucmlnaHRzLnNlbGVjdCxcclxuICAgICAgICAgIGVkaXQ6IGRtc09iamVjdC5yaWdodHMuZWRpdCxcclxuICAgICAgICAgIGRlbGV0ZTogZG1zT2JqZWN0LnJpZ2h0cy5kZWxldGUsXHJcbiAgICAgICAgICBmaW5hbGl6ZTogZG1zT2JqZWN0LnJpZ2h0cy5maW5hbGl6ZSxcclxuICAgICAgICAgIHJlY3ljbGU6IGRtc09iamVjdC5yaWdodHMucmVjeWNsZVxyXG4gICAgICAgIH1cclxuICAgICAgfV0sXHJcblxyXG4gICAgICBjb250ZW50aWQ6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQuaWQgOiBudWxsLFxyXG4gICAgICBjb250ZW50dHlwZTogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC50eXBlIDogbnVsbCxcclxuICAgICAgY29udGVudGNvdW50OiBkbXNPYmplY3QuY29udGVudCA/IGRtc09iamVjdC5jb250ZW50LmNvdW50IDogbnVsbCxcclxuICAgICAgY29udGVudHM6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQuY29udGVudHMgOiBudWxsLFxyXG5cclxuICAgICAgc3Vic2NyaXB0aW9uczogZG1zT2JqZWN0LnN1YnNjcmlwdGlvbnMsXHJcbiAgICAgIHJlc3VibWlzc2lvbnM6IGRtc09iamVjdC5yZXN1Ym1pc3Npb25zLFxyXG4gICAgICBhZGRpdGlvbmFsdmlzaWJpbGl0eTogZG1zT2JqZWN0LmFkZGl0aW9uYWx2aXNpYmlsaXR5XHJcbiAgICB9O1xyXG5cclxuICAgIGxldCBjb3BpZWREbXNPYmplY3QgPSBuZXcgRG1zT2JqZWN0KGJhc2UpO1xyXG4gICAgY29waWVkRG1zT2JqZWN0LnR5cGUgPSBkbXNPYmplY3QudHlwZTtcclxuXHJcbiAgICByZXR1cm4gY29waWVkRG1zT2JqZWN0O1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
2
|
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
3
3
|
import { UserService } from '../user/user.service';
|
|
4
4
|
import { Utils } from '../../util/utils';
|
|
5
|
+
import { CoreConfig } from '../../config/core-config';
|
|
6
|
+
import { CORE_CONFIG } from '../../config/core-init.tokens';
|
|
5
7
|
/**
|
|
6
8
|
* The Upload Service is provides access to Upload data (files)
|
|
7
9
|
*/
|
|
@@ -9,7 +11,8 @@ export class UploadService {
|
|
|
9
11
|
/**
|
|
10
12
|
* @ignore
|
|
11
13
|
*/
|
|
12
|
-
constructor(http, userService) {
|
|
14
|
+
constructor(coreConfig, http, userService) {
|
|
15
|
+
this.coreConfig = coreConfig;
|
|
13
16
|
this.http = http;
|
|
14
17
|
this.userService = userService;
|
|
15
18
|
}
|
|
@@ -24,14 +27,15 @@ export class UploadService {
|
|
|
24
27
|
const formData = new FormData();
|
|
25
28
|
const headers = new HttpHeaders({ 'Accept-Language': this.userService.getCurrentUser().getClientLocale() });
|
|
26
29
|
files.forEach(file => formData.append('files[]', file, Utils.encodeFileName(file.name)));
|
|
27
|
-
return this.http.post(uri, formData, { headers });
|
|
30
|
+
return this.http.post(uri, formData, { headers, withCredentials: this.coreConfig.withCredentials });
|
|
28
31
|
}
|
|
29
32
|
}
|
|
30
33
|
UploadService.decorators = [
|
|
31
34
|
{ type: Injectable }
|
|
32
35
|
];
|
|
33
36
|
UploadService.ctorParameters = () => [
|
|
37
|
+
{ type: CoreConfig, decorators: [{ type: Inject, args: [CORE_CONFIG,] }] },
|
|
34
38
|
{ type: HttpClient },
|
|
35
39
|
{ type: UserService }
|
|
36
40
|
];
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvdXBsb2FkL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFN0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRzFEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWE7SUFDeEI7O09BRUc7SUFDSCxZQUM4QixVQUFzQixFQUMxQyxJQUFnQixFQUFVLFdBQXdCO1FBRDlCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDMUMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQzVELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNoQyxNQUFNLE9BQU8sR0FBZ0IsSUFBSSxXQUFXLENBQUMsRUFBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLGVBQWUsRUFBRSxFQUFDLENBQUMsQ0FBQztRQUN2SCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQztJQUNwRyxDQUFDOzs7WUF0QkYsVUFBVTs7O1lBUEgsVUFBVSx1QkFhYixNQUFNLFNBQUMsV0FBVztZQWpCZixVQUFVO1lBRVYsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi91c2VyL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xyXG5pbXBvcnQge0NvcmVDb25maWd9IGZyb20gJy4uLy4uL2NvbmZpZy9jb3JlLWNvbmZpZyc7XHJcbmltcG9ydCB7Q09SRV9DT05GSUd9IGZyb20gJy4uLy4uL2NvbmZpZy9jb3JlLWluaXQudG9rZW5zJztcclxuXHJcblxyXG4vKipcclxuICogVGhlIFVwbG9hZCBTZXJ2aWNlIGlzIHByb3ZpZGVzIGFjY2VzcyB0byBVcGxvYWQgZGF0YSAoZmlsZXMpXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWRTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KENPUkVfQ09ORklHKSBwdWJsaWMgY29yZUNvbmZpZzogQ29yZUNvbmZpZyxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwbG9hZHMgZmlsZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdXJpIFVwbG9hZCBkZXN0aW5hdGlvbiB1cmlcclxuICAgKiBAcGFyYW0gZmlsZXMgRmlsZXMgdG8gYmUgdXBsb2FkZWRcclxuICAgKiBAcmV0dXJucyByZXNvbHZlZCBieSB0aGUgcmVzcG9uc2Ugb2YgdGhlIHVwbG9hZCBkZXN0aW5hdGlvblxyXG4gICAqL1xyXG4gIHVwbG9hZCh1cmk6IHN0cmluZywgZmlsZXM6IEZpbGVbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgY29uc3QgaGVhZGVyczogSHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoeydBY2NlcHQtTGFuZ3VhZ2UnOiB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkuZ2V0Q2xpZW50TG9jYWxlKCl9KTtcclxuICAgIGZpbGVzLmZvckVhY2goZmlsZSA9PiBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzW10nLCBmaWxlLCBVdGlscy5lbmNvZGVGaWxlTmFtZShmaWxlLm5hbWUpKSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJpLCBmb3JtRGF0YSwge2hlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { throwError as observableThrowError, EMPTY as observableEmpty } from 'rxjs';
|
|
2
2
|
import { EoError } from '../model/eo-error.model';
|
|
3
3
|
import * as momentImported from 'moment';
|
|
4
|
+
import { RangeValue } from '../model/range-value.model';
|
|
4
5
|
/**
|
|
5
6
|
* @ignore
|
|
6
7
|
*/
|
|
@@ -275,5 +276,28 @@ export class Utils {
|
|
|
275
276
|
return acc;
|
|
276
277
|
}, {});
|
|
277
278
|
}
|
|
279
|
+
static formDataStringify(o) {
|
|
280
|
+
const f = (key, value) => {
|
|
281
|
+
if (value instanceof RangeValue) {
|
|
282
|
+
return `/${Utils.PREF_RANGEVALUE}(${JSON.stringify(value)})/`;
|
|
283
|
+
}
|
|
284
|
+
return value;
|
|
285
|
+
};
|
|
286
|
+
return JSON.stringify(o, f);
|
|
287
|
+
}
|
|
288
|
+
static formDataParse(str) {
|
|
289
|
+
const f = (key, value) => {
|
|
290
|
+
if (typeof value === 'string' &&
|
|
291
|
+
value.startsWith(`/${Utils.PREF_RANGEVALUE}(`) &&
|
|
292
|
+
value.endsWith(')/')) {
|
|
293
|
+
value = value.substring(Utils.PREF_RANGEVALUE.length + 2, value.length - 2);
|
|
294
|
+
const parsed = JSON.parse(value);
|
|
295
|
+
return new RangeValue(parsed.operator, parsed.firstValue, parsed.secondValue);
|
|
296
|
+
}
|
|
297
|
+
return value;
|
|
298
|
+
};
|
|
299
|
+
return JSON.parse(str, f);
|
|
300
|
+
}
|
|
278
301
|
}
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3V0aWwvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxLQUFLLElBQUksZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzlGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssY0FBYyxNQUFNLFFBQVEsQ0FBQztBQUV6Qzs7R0FFRztBQUNILE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQztBQUk5QixNQUFNLE9BQU8sS0FBSztJQUVoQjs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVcsRUFBRSxNQUFVO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzFCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUM7YUFDaEUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvRCxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxH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Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciwgRU1QVFkgYXMgb2JzZXJ2YWJsZUVtcHR5LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtFb0Vycm9yfSBmcm9tICcuLi9tb2RlbC9lby1lcnJvci5tb2RlbCc7XHJcbmltcG9ydCAqIGFzIG1vbWVudEltcG9ydGVkIGZyb20gJ21vbWVudCc7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuY29uc3QgbW9tZW50ID0gbW9tZW50SW1wb3J0ZWQ7XHJcblxyXG5cclxuZXhwb3J0IHR5cGUgRm9ybWF0ZWRNYWlsVG8gPSBzdHJpbmcgfCBzdHJpbmdbXTtcclxuZXhwb3J0IGNsYXNzIFV0aWxzIHtcclxuXHJcbiAgLyoqXHJcbiAgICogVXRpbGl0eSBtZXRob2QgZm9yIGFkZGluZyBwYXJhbWV0ZXJzIHRvIGEgZ2l2ZW4gVVJJLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVyaSBUaGUgdXJpIHN0cmluZyB0byBhdHRhY2ggdGhlIHBhcmFtZXRlcnMgdG9cclxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBvYmplY3QgY29udGFpbmluZyBwYXJhbWV0ZXJzIHRvIGJlIGFwcGVuZGVkXHJcbiAgICogQHJldHVybnMgdGhlIGdpdmVuIHVyaSBleHRlbmRlZCBieSB0aGUgZ2l2ZW4gcGFyYW1ldGVycyArIHJlbW92ZSBlbXB0eSBwYXJhbWV0ZXJzXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBidWlsZFVyaSh1cmk6IHN0cmluZywgcGFyYW1zOiB7fSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBxID0gT2JqZWN0LmtleXMocGFyYW1zKVxyXG4gICAgICAuZmlsdGVyKGsgPT4gcGFyYW1zW2tdIHx8IHBhcmFtc1trXSA9PT0gMCB8fCBwYXJhbXNba10gPT09IGZhbHNlKVxyXG4gICAgICAubWFwKGsgPT4gayArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbXNba10pKS5qb2luKCcmJyk7XHJcbiAgICByZXR1cm4gdXJpICsgKHEgPyAnPycgKyBxIDogJycpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHVuaXF1ZSBpZGVudGlmaWVyLlxyXG4gICAqIEByZXR1cm5zIEEgVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHV1aWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVdGlscy5fcDgoKSArIFV0aWxzLl9wOCh0cnVlKSArIFV0aWxzLl9wOCh0cnVlKSArIFV0aWxzLl9wOCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5jb2RlIGEgZmlsZW5hbWUgc2FmZSBmb3Igc2VuZGluZyBjaGFycyBiZXlvbmQgQVNDSUktN2JpdCB1c2luZyBxdW90ZWQgcHJpbnRhYmxlIGVuY29kaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpbGVuYW1lIFRoZSBmaWxlIG5hbWVcclxuICAgKiBAcmV0dXJucyBUaGUgcXVvdGVkIHByaW50YWJsZSBmaWxlbmFtZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IFV0aWxzLmVuY29kZVRvUXVvdGVkUHJpbnRhYmxlKFV0aWxzLmVuY29kZVRvVXRmOChmaWxlbmFtZSkpLnJlcGxhY2UoL18vZywgJz01RicpXHJcbiAgICByZXR1cm4gYD0/VVRGLTg/UT8ke2ZpbGVOYW1lfT89YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gc1xyXG4gICAqIEByZXR1cm4gc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX3A4KHM/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHAgPSAoTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikgKyAnMDAwMDAwMDAwJykuc3Vic3RyKDIsIDgpO1xyXG4gICAgcmV0dXJuIHMgPyBgLSR7cC5zdWJzdHIoMCwgNCl9LSR7cC5zdWJzdHIoNCwgNCl9YCA6IHA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0cyBhIGphdmFzY3JpcHQgdGV4dCB0byB0aGUgdXRmLTggY29udmVydGVkIHZhcmlhbnQuXHJcbiAgICogU2VlIFt1bmljb2RlXXtAbGluayBodHRwOi8vdGhsaXN0Lm9ubGluZWhvbWUuZGUvdGhvbWFzX2hvbWVwYWdlL3VuaWNvZGUvVVRGLTglMjBLb252ZXJ0aWVydW5nJTIwbWl0dGVscyUyMEphdmFTY3JpcHQuaHRtfSBmb3IgcmVmZXJlbmNlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcmF3aW5wdXQgVGhlIGlucHV0IHN0cmluZ1xyXG4gICAqIEByZXR1cm5zIFRoZSB1dGYtOCBjb252ZXJ0ZWQgc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZW5jb2RlVG9VdGY4KHJhd2lucHV0KSB7XHJcbiAgICAvKipcclxuICAgICAqIE5vcm1hbGl6ZSBsaW5lIGJyZWFrc1xyXG4gICAgICovXHJcbiAgICByYXdpbnB1dCA9IHJhd2lucHV0LnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XHJcbiAgICBsZXQgdXRmcmV0dXJuID0gJyc7XHJcbiAgICBmb3IgKGxldCBuID0gMDsgbiA8IHJhd2lucHV0Lmxlbmd0aDsgbisrKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBVbmljb2RlIGZvciBjdXJyZW50IGNoYXJcclxuICAgICAgICovXHJcbiAgICAgIGNvbnN0IGMgPSByYXdpbnB1dC5jaGFyQ29kZUF0KG4pO1xyXG4gICAgICBpZiAoYyA8IDEyOCkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEFsbCBjaGFycyByYW5nZSAwLTEyNyA9PiAxYnl0ZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xyXG4gICAgICB9IGVsc2UgaWYgKChjID4gMTI3KSAmJiAoYyA8IDIwNDgpKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQWxsIGNoYXJzIHJhbmdlIGZyb20gMTI3IHRvIDIwNDcgPT4gMmJ5dGVcclxuICAgICAgICAgKi9cclxuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiA2KSB8IDE5Mik7XHJcbiAgICAgICAgdXRmcmV0dXJuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiA2MykgfCAxMjgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEFsbCBjaGFycyByYW5nZSBmcm9tIDIwNDggdG8gNjY1MzYgPT4gM2J5dGVcclxuICAgICAgICAgKi9cclxuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiAxMikgfCAyMjQpO1xyXG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyA+PiA2KSAmIDYzKSB8IDEyOCk7XHJcbiAgICAgICAgdXRmcmV0dXJuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiA2MykgfCAxMjgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXRmcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VlIFtxdW90ZWQtcHJpbnRhYmxlXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9xdW90ZWQtcHJpbnRhYmxlL2Jsb2IvbWFzdGVyL3F1b3RlZC1wcmludGFibGUuanN9XHJcbiAgICoqL1xyXG4gIHByaXZhdGUgc3RhdGljIHF1b3RlZFByaW50YWJsZShzeW1ib2wpIHtcclxuICAgIGlmIChzeW1ib2wgPiAnXFx4RkYnKSB7XHJcbiAgICAgIHRocm93IFJhbmdlRXJyb3IoJ2BlbmNvZGVUb1F1b3RlZFByaW50YWJsZWAgZXhwZWN0cyBleHRlbmRlZCBBU0NJSSBpbnB1dCBvbmx5LiBNaXNzaW5nIHByaW9yIFVURi04IGVuY29kaW5nPycpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29kZVBvaW50ID0gc3ltYm9sLmNoYXJDb2RlQXQoMCk7XHJcbiAgICBjb25zdCBoZXhhZGVjaW1hbCA9IGNvZGVQb2ludC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcclxuICAgIHJldHVybiAnPScgKyAoJzAnICsgaGV4YWRlY2ltYWwpLnNsaWNlKC0yKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuY29kZSBzeW1ib2xzIHRoYXQgYXJlIGRlZmluaXRlbHkgdW5zYWZlIChpLmUuIHVuc2FmZSBpbiBhbnkgY29udGV4dCkuIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZGVzY3JpYmVzIHRoZXNlIHVuc2FmZSBzeW1ib2xzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJhd2lucHV0IElucHV0IHN0cmluZyB0byBiZSBlbmNvZGVkXHJcbiAgICogQHJldHVybnMgVGhlIGVuY29kZWQgc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZW5jb2RlVG9RdW90ZWRQcmludGFibGUocmF3aW5wdXQpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZW5jb2RlZCA9IHJhd2lucHV0LnJlcGxhY2UoL1tcXDAtXFxiXFxuLVxceDFGPVxceDdGLVxcdUQ3RkZcXHVEQzAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18W1xcdUQ4MDAtXFx1REJGRl0vZywgdGhpcy5xdW90ZWRQcmludGFibGUpO1xyXG4gICAgcmV0dXJuIGVuY29kZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTb3J0cyBBbiBBcnJheSBvZiBPYmplY3QgYnkgZ2l2ZW4ga2V5XHJcbiAgICogU2VlIFtuZy1wYWNrYWdyIGlzc3VlcyA2OTZde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBrZXlcclxuICAgKiBAcGFyYW0gb3JkZXJcclxuICAgKiBAcGFyYW0gbG9jYWxlc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICogQHJldHVybnMgKGE6IGFueSwgYjogYW55KSA9PiBudW1iZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHNvcnRWYWx1ZXMoa2V5ID0gJycsIG9yZGVyID0gJ2FzYycsIGxvY2FsZXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9ucz86IEludGwuQ29sbGF0b3JPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmID0gKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgIGxldCBjb21wYXJpc29uOiBudW1iZXI7XHJcbiAgICAgIGNvbnN0IHZhckEgPSBVdGlscy5nZXRQcm9wZXJ0eShhLCBrZXkpO1xyXG4gICAgICBjb25zdCB2YXJCID0gVXRpbHMuZ2V0UHJvcGVydHkoYiwga2V5KTtcclxuICAgICAgaWYgKHR5cGVvZiB2YXJBID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFyQiA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBjb21wYXJpc29uID0gdmFyQSAtIHZhckI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc3RyaW5nQSA9IHZhckEgfHwgdmFyQSA9PT0gMCA/IHZhckEudG9TdHJpbmcoKSA6ICcnO1xyXG4gICAgICAgIGNvbnN0IHN0cmluZ0IgPSB2YXJCIHx8IHZhckIgPT09IDAgPyB2YXJCLnRvU3RyaW5nKCkgOiAnJztcclxuICAgICAgICBjb21wYXJpc29uID0gc3RyaW5nQS5sb2NhbGVDb21wYXJlKHN0cmluZ0IsIGxvY2FsZXMsIG9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvcmRlciA9PT0gJ2Rlc2MnID8gY29tcGFyaXNvbiAqIC0xIDogY29tcGFyaXNvbjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFtuZy1wYWNrYWdyIGlzc3VlcyA2OTZde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBvYmplY3RcclxuICAgKiBAcGFyYW0gc3RyaW5nIGtleVxyXG4gICAqIEByZXR1cm5zIGFueVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UHJvcGVydHkob2JqZWN0OiBhbnksIGtleSA9ICcnKTogYW55IHtcclxuICAgIGNvbnN0IGYgPSBrZXkgPyBrZXkuc3BsaXQoJy4nKS5yZWR1Y2UoKG8sIGspID0+IChvIHx8IHt9KVtrXSwgb2JqZWN0KSA6IG9iamVjdDtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIG9uIE9ic2VydmFibGUuY2F0Y2ggb3IgT2JzZXJ2YWJsZS5zdWJzY3JpYmUgdG8gcmV0dXJuIGVtcHR5IHZhbHVlXHJcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzIDY5Nl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxyXG4gICAqXHJcbiAgICogQHBhcmFtIChlcnJvcikgPT4gYW55IGNhbGxiYWNrXHJcbiAgICogQHJldHVybnMgKGVycm9yKSA9PiBPYnNlcnZhYmxlPG5ldmVyPlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHkoY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSkge1xyXG4gICAgY29uc3QgZiA9IChlcnJvcikgPT4ge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZUVtcHR5O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIG9uIE9ic2VydmFibGUuY2F0Y2ggd2l0aCBzcGVjaWZpYyBza2lwTm90aWZpY2F0aW9uIGZ1bmN0aW9uICEhIVxyXG4gICAqIFtuZy1wYWNrYWdyIGlzc3VlcyA2OTZde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBza2lwTm90aWZpY2F0aW9uXHJcbiAgICogQHBhcmFtIGNhbGxiYWNrXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gbWVzc2FnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgY2F0Y2hTa2lwKHNraXBOb3RpZmljYXRpb24/OiAoZXJyb3IpID0+IGFueSwgY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgZiA9IChlcnJvcikgPT4ge1xyXG4gICAgICBjb25zdCBfZXJyb3IgPSBjYWxsYmFjayAmJiBjYWxsYmFjayhlcnJvcik7XHJcbiAgICAgIGNvbnN0IF9za2lwTm90aWZpY2F0aW9uID0gc2tpcE5vdGlmaWNhdGlvbiAmJiBza2lwTm90aWZpY2F0aW9uKGVycm9yKTtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKG5ldyBFb0Vycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIF9za2lwTm90aWZpY2F0aW9uKSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2Ugb24gT2JzZXJ2YWJsZS5jYXRjaCAhISFcclxuICAgKiBbbmctcGFja2FnciBpc3N1ZXNde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBjYWxsYmFja1xyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxyXG4gICAqIEByZXR1cm4gKGVycm9yKSA9PiBPYnNlcnZhYmxlPG5ldmVyPlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgY2F0Y2goY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgc2tpcE5vdGlmaWNhdGlvbj86IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGYgPSAoZXJyb3IpID0+IHtcclxuICAgICAgY29uc3QgX2Vycm9yID0gY2FsbGJhY2sgJiYgY2FsbGJhY2soZXJyb3IpO1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IobmV3IEVvRXJyb3IoX2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBfZXJyb3IgOiBlcnJvciwgbmFtZSwgbWVzc2FnZSwgc2tpcE5vdGlmaWNhdGlvbikpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIG9uIE9ic2VydmFibGUuc3Vic2NyaWJlICEhIVxyXG4gICAqIFtuZy1wYWNrYWdyIGlzc3Vlc117QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNhbGxiYWNrXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBza2lwTm90aWZpY2F0aW9uXHJcbiAgICogQHJldHVybiAoZXJyb3IpID0+IHZvaWRcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHRocm93KGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHNraXBOb3RpZmljYXRpb24/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBmID0gKGVycm9yKSA9PiB7XHJcbiAgICAgIGNvbnN0IF9lcnJvciA9IGNhbGxiYWNrICYmIGNhbGxiYWNrKGVycm9yKTtcclxuICAgICAgdGhyb3cgbmV3IEVvRXJyb3IoX2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBfZXJyb3IgOiBlcnJvciwgbmFtZSwgbWVzc2FnZSwgc2tpcE5vdGlmaWNhdGlvbik7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2Ugb24gT2JzZXJ2YWJsZS5zdWJzY3JpYmUgb25seSBpZiB5b3Ugd2FudCB0byBza2lwIG5vdGlmaWNhdGlvbiAvIHRvYXN0ISEhXHJcbiAgICpcclxuICAgKiBAcGFyYW0gY2FsbGJhY2tcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBtZXNzYWdlXHJcbiAgICogQHBhcmFtIHNraXBOb3RpZmljYXRpb25cclxuICAgKiBAcmV0dXJuIChlcnJvcikgPT4gdm9pZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgbG9nRXJyb3IoY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgc2tpcE5vdGlmaWNhdGlvbiA9IHRydWUpIHtcclxuICAgIHJldHVybiBVdGlscy50aHJvdyhjYWxsYmFjaywgbmFtZSwgbWVzc2FnZSwgc2tpcE5vdGlmaWNhdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgZWxlbWVudCBpcyB2aXNpYmxlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZWxlbVxyXG4gICAqIEByZXR1cm4gYm9vbGVhblxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgaXNWaXNpYmxlKGVsZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhKGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldEJhc2VIcmVmKCkge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiYXNlJylbMF0uZ2V0QXR0cmlidXRlKCdocmVmJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIFRydW5jYXRlIGEgc3RyaW5nIChmaXJzdCBhcmd1bWVudCkgaWYgaXQgaXMgbG9uZ2VyIHRoYW4gdGhlIGdpdmVuIG1heGltdW0gc3RyaW5nIGxlbmd0aCAoc2Vjb25kIGFyZ3VtZW50KS5cclxuICAgKiBSZXR1cm4gdGhlIHRydW5jYXRlZCBzdHJpbmcgd2l0aCBhIC4uLiBlbmRpbmcgb3Qgd2hhdHMgcHJvdmlkZWQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RyaW5nIHN0clxyXG4gICAqIEBwYXJhbSBudW1iZXIgbnVtXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHRydW5jYXRlU3RyaW5nKHN0ciwgbnVtLCBlbmRpbmcgPSAnLi4uJykge1xyXG4gICAgaWYgKHN0ci5sZW5ndGggPiBudW0pIHtcclxuICAgICAgaWYgKG51bSA+IDMpIHtcclxuICAgICAgICBudW0gLT0gMztcclxuICAgICAgfVxyXG4gICAgICBzdHIgPSBgJHtzdHIuc3Vic3RyaW5nKDAsIG51bSl9JHtlbmRpbmd9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBUaW1lWm9uZSBPZmZzZXN0IGFzIElTTyBTdHJpbmcuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VGltZXpvbmVPZmZzZXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBtb21lbnQoKS5mb3JtYXQoJ1onKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0TWFpbFRvKHZhbHVlOiBGb3JtYXRlZE1haWxUbywgaXNFbWFpbDogYm9vbGVhbik6IEZvcm1hdGVkTWFpbFRvIHtcclxuICAgIGlmIChpc0VtYWlsICYmICEhdmFsdWUpIHtcclxuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSkgPyB2YWx1ZS5qb2luKCkucmVwbGFjZSgvLC9nLCAnOyAnKSA6IHZhbHVlLnJlcGxhY2UoLywvZywgJzsgJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGFycmF5VG9PYmplY3QoYXJyID0gW10sIGtleVByb3BlcnR5Pzogc3RyaW5nIHwgKChvOiBhbnkpID0+IHN0cmluZyksIHZhbHVlUHJvcGVydHk/OiBzdHJpbmcgfCAoKG86IGFueSkgPT4gYW55KSkge1xyXG4gICAgY29uc3Qga2V5ID0gdHlwZW9mIGtleVByb3BlcnR5ID09PSAnc3RyaW5nJyA/IChvOiBhbnkpID0+IG9ba2V5UHJvcGVydHldIDoga2V5UHJvcGVydHk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiB2YWx1ZVByb3BlcnR5ID09PSAnc3RyaW5nJyA/IChvOiBhbnkpID0+IG9bdmFsdWVQcm9wZXJ0eV0gOiB2YWx1ZVByb3BlcnR5O1xyXG4gICAgcmV0dXJuIGFyci5yZWR1Y2UoKGFjYywgY3VyLCBpKSA9PiB7XHJcbiAgICAgIGFjY1trZXkgPyBrZXkoY3VyKSA6IGldID0gdmFsdWUgPyB2YWx1ZShjdXIpIDogY3VyO1xyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
302
|
+
Utils.PREF_RANGEVALUE = 'RangeValue';
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3V0aWwvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxLQUFLLElBQUksZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzlGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssY0FBYyxNQUFNLFFBQVEsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQ7O0dBRUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFJOUIsTUFBTSxPQUFPLEtBQUs7SUFJaEI7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsTUFBVTtRQUM1QyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUMxQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDO2FBQ2hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0QsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFN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QUFDLENBQUM7SUFDNUIsQ0FBQzs7QUF4VGMscUJBQWUsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Rocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IsIEVNUFRZIGFzIG9ic2VydmFibGVFbXB0eSwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7RW9FcnJvcn0gZnJvbSAnLi4vbW9kZWwvZW8tZXJyb3IubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRJbXBvcnRlZCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQge1JhbmdlVmFsdWV9IGZyb20gJy4uL21vZGVsL3JhbmdlLXZhbHVlLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRJbXBvcnRlZDtcclxuXHJcblxyXG5leHBvcnQgdHlwZSBGb3JtYXRlZE1haWxUbyA9IHN0cmluZyB8IHN0cmluZ1tdO1xyXG5leHBvcnQgY2xhc3MgVXRpbHMge1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBQUkVGX1JBTkdFVkFMVUUgPSAnUmFuZ2VWYWx1ZSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFV0aWxpdHkgbWV0aG9kIGZvciBhZGRpbmcgcGFyYW1ldGVycyB0byBhIGdpdmVuIFVSSS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB1cmkgVGhlIHVyaSBzdHJpbmcgdG8gYXR0YWNoIHRoZSBwYXJhbWV0ZXJzIHRvXHJcbiAgICogQHBhcmFtIHBhcmFtcyBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgcGFyYW1ldGVycyB0byBiZSBhcHBlbmRlZFxyXG4gICAqIEByZXR1cm5zIHRoZSBnaXZlbiB1cmkgZXh0ZW5kZWQgYnkgdGhlIGdpdmVuIHBhcmFtZXRlcnMgKyByZW1vdmUgZW1wdHkgcGFyYW1ldGVyc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgYnVpbGRVcmkodXJpOiBzdHJpbmcsIHBhcmFtczoge30pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcSA9IE9iamVjdC5rZXlzKHBhcmFtcylcclxuICAgICAgLmZpbHRlcihrID0+IHBhcmFtc1trXSB8fCBwYXJhbXNba10gPT09IDAgfHwgcGFyYW1zW2tdID09PSBmYWxzZSlcclxuICAgICAgLm1hcChrID0+IGsgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocGFyYW1zW2tdKSkuam9pbignJicpO1xyXG4gICAgcmV0dXJuIHVyaSArIChxID8gJz8nICsgcSA6ICcnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSB1bmlxdWUgaWRlbnRpZmllci5cclxuICAgKiBAcmV0dXJucyBBIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyB1dWlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gVXRpbHMuX3A4KCkgKyBVdGlscy5fcDgodHJ1ZSkgKyBVdGlscy5fcDgodHJ1ZSkgKyBVdGlscy5fcDgoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuY29kZSBhIGZpbGVuYW1lIHNhZmUgZm9yIHNlbmRpbmcgY2hhcnMgYmV5b25kIEFTQ0lJLTdiaXQgdXNpbmcgcXVvdGVkIHByaW50YWJsZSBlbmNvZGluZy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWxlbmFtZSBUaGUgZmlsZSBuYW1lXHJcbiAgICogQHJldHVybnMgVGhlIHF1b3RlZCBwcmludGFibGUgZmlsZW5hbWVcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGVuY29kZUZpbGVOYW1lKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSBVdGlscy5lbmNvZGVUb1F1b3RlZFByaW50YWJsZShVdGlscy5lbmNvZGVUb1V0ZjgoZmlsZW5hbWUpKS5yZXBsYWNlKC9fL2csICc9NUYnKVxyXG4gICAgcmV0dXJuIGA9P1VURi04P1E/JHtmaWxlTmFtZX0/PWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBib29sZWFuIHNcclxuICAgKiBAcmV0dXJuIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIF9wOChzPzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwID0gKE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpICsgJzAwMDAwMDAwMCcpLnN1YnN0cigyLCA4KTtcclxuICAgIHJldHVybiBzID8gYC0ke3Auc3Vic3RyKDAsIDQpfS0ke3Auc3Vic3RyKDQsIDQpfWAgOiBwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydHMgYSBqYXZhc2NyaXB0IHRleHQgdG8gdGhlIHV0Zi04IGNvbnZlcnRlZCB2YXJpYW50LlxyXG4gICAqIFNlZSBbdW5pY29kZV17QGxpbmsgaHR0cDovL3RobGlzdC5vbmxpbmVob21lLmRlL3Rob21hc19ob21lcGFnZS91bmljb2RlL1VURi04JTIwS29udmVydGllcnVuZyUyMG1pdHRlbHMlMjBKYXZhU2NyaXB0Lmh0bX0gZm9yIHJlZmVyZW5jZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJhd2lucHV0IFRoZSBpbnB1dCBzdHJpbmdcclxuICAgKiBAcmV0dXJucyBUaGUgdXRmLTggY29udmVydGVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZVRvVXRmOChyYXdpbnB1dCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBOb3JtYWxpemUgbGluZSBicmVha3NcclxuICAgICAqL1xyXG4gICAgcmF3aW5wdXQgPSByYXdpbnB1dC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpO1xyXG4gICAgbGV0IHV0ZnJldHVybiA9ICcnO1xyXG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCByYXdpbnB1dC5sZW5ndGg7IG4rKykge1xyXG4gICAgICAvKipcclxuICAgICAgICogVW5pY29kZSBmb3IgY3VycmVudCBjaGFyXHJcbiAgICAgICAqL1xyXG4gICAgICBjb25zdCBjID0gcmF3aW5wdXQuY2hhckNvZGVBdChuKTtcclxuICAgICAgaWYgKGMgPCAxMjgpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBbGwgY2hhcnMgcmFuZ2UgMC0xMjcgPT4gMWJ5dGVcclxuICAgICAgICAgKi9cclxuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcclxuICAgICAgfSBlbHNlIGlmICgoYyA+IDEyNykgJiYgKGMgPCAyMDQ4KSkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEFsbCBjaGFycyByYW5nZSBmcm9tIDEyNyB0byAyMDQ3ID0+IDJieXRlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdXRmcmV0dXJuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgPj4gNikgfCAxOTIpO1xyXG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgNjMpIHwgMTI4KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBbGwgY2hhcnMgcmFuZ2UgZnJvbSAyMDQ4IHRvIDY2NTM2ID0+IDNieXRlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdXRmcmV0dXJuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgPj4gMTIpIHwgMjI0KTtcclxuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgPj4gNikgJiA2MykgfCAxMjgpO1xyXG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgNjMpIHwgMTI4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHV0ZnJldHVybjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlZSBbcXVvdGVkLXByaW50YWJsZV17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvcXVvdGVkLXByaW50YWJsZS9ibG9iL21hc3Rlci9xdW90ZWQtcHJpbnRhYmxlLmpzfVxyXG4gICAqKi9cclxuICBwcml2YXRlIHN0YXRpYyBxdW90ZWRQcmludGFibGUoc3ltYm9sKSB7XHJcbiAgICBpZiAoc3ltYm9sID4gJ1xceEZGJykge1xyXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdgZW5jb2RlVG9RdW90ZWRQcmludGFibGVgIGV4cGVjdHMgZXh0ZW5kZWQgQVNDSUkgaW5wdXQgb25seS4gTWlzc2luZyBwcmlvciBVVEYtOCBlbmNvZGluZz8nKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvZGVQb2ludCA9IHN5bWJvbC5jaGFyQ29kZUF0KDApO1xyXG4gICAgY29uc3QgaGV4YWRlY2ltYWwgPSBjb2RlUG9pbnQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gJz0nICsgKCcwJyArIGhleGFkZWNpbWFsKS5zbGljZSgtMik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmNvZGUgc3ltYm9scyB0aGF0IGFyZSBkZWZpbml0ZWx5IHVuc2FmZSAoaS5lLiB1bnNhZmUgaW4gYW55IGNvbnRleHQpLiBUaGUgcmVndWxhciBleHByZXNzaW9uIGRlc2NyaWJlcyB0aGVzZSB1bnNhZmUgc3ltYm9scy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSByYXdpbnB1dCBJbnB1dCBzdHJpbmcgdG8gYmUgZW5jb2RlZFxyXG4gICAqIEByZXR1cm5zIFRoZSBlbmNvZGVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZVRvUXVvdGVkUHJpbnRhYmxlKHJhd2lucHV0KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVuY29kZWQgPSByYXdpbnB1dC5yZXBsYWNlKC9bXFwwLVxcYlxcbi1cXHgxRj1cXHg3Ri1cXHVEN0ZGXFx1REMwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEODAwLVxcdURCRkZdL2csIHRoaXMucXVvdGVkUHJpbnRhYmxlKTtcclxuICAgIHJldHVybiBlbmNvZGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU29ydHMgQW4gQXJyYXkgb2YgT2JqZWN0IGJ5IGdpdmVuIGtleVxyXG4gICAqIFNlZSBbbmctcGFja2FnciBpc3N1ZXMgNjk2XXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XHJcbiAgICpcclxuICAgKiBAcGFyYW0ga2V5XHJcbiAgICogQHBhcmFtIG9yZGVyXHJcbiAgICogQHBhcmFtIGxvY2FsZXNcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqIEByZXR1cm5zIChhOiBhbnksIGI6IGFueSkgPT4gbnVtYmVyXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBzb3J0VmFsdWVzKGtleSA9ICcnLCBvcmRlciA9ICdhc2MnLCBsb2NhbGVzPzogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBJbnRsLkNvbGxhdG9yT3B0aW9ucykge1xyXG4gICAgY29uc3QgZiA9IChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgY29tcGFyaXNvbjogbnVtYmVyO1xyXG4gICAgICBjb25zdCB2YXJBID0gVXRpbHMuZ2V0UHJvcGVydHkoYSwga2V5KTtcclxuICAgICAgY29uc3QgdmFyQiA9IFV0aWxzLmdldFByb3BlcnR5KGIsIGtleSk7XHJcbiAgICAgIGlmICh0eXBlb2YgdmFyQSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhckIgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgY29tcGFyaXNvbiA9IHZhckEgLSB2YXJCO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHN0cmluZ0EgPSB2YXJBIHx8IHZhckEgPT09IDAgPyB2YXJBLnRvU3RyaW5nKCkgOiAnJztcclxuICAgICAgICBjb25zdCBzdHJpbmdCID0gdmFyQiB8fCB2YXJCID09PSAwID8gdmFyQi50b1N0cmluZygpIDogJyc7XHJcbiAgICAgICAgY29tcGFyaXNvbiA9IHN0cmluZ0EubG9jYWxlQ29tcGFyZShzdHJpbmdCLCBsb2NhbGVzLCBvcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb3JkZXIgPT09ICdkZXNjJyA/IGNvbXBhcmlzb24gKiAtMSA6IGNvbXBhcmlzb247XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBbbmctcGFja2FnciBpc3N1ZXMgNjk2XXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XHJcbiAgICpcclxuICAgKiBAcGFyYW0gb2JqZWN0XHJcbiAgICogQHBhcmFtIHN0cmluZyBrZXlcclxuICAgKiBAcmV0dXJucyBhbnlcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldFByb3BlcnR5KG9iamVjdDogYW55LCBrZXkgPSAnJyk6IGFueSB7XHJcbiAgICBjb25zdCBmID0ga2V5ID8ga2V5LnNwbGl0KCcuJykucmVkdWNlKChvLCBrKSA9PiAobyB8fCB7fSlba10sIG9iamVjdCkgOiBvYmplY3Q7XHJcbiAgICByZXR1cm4gZjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLmNhdGNoIG9yIE9ic2VydmFibGUuc3Vic2NyaWJlIHRvIHJldHVybiBlbXB0eSB2YWx1ZVxyXG4gICAqIFtuZy1wYWNrYWdyIGlzc3VlcyA2OTZde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSAoZXJyb3IpID0+IGFueSBjYWxsYmFja1xyXG4gICAqIEByZXR1cm5zIChlcnJvcikgPT4gT2JzZXJ2YWJsZTxuZXZlcj5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGVtcHR5KGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnkpIHtcclxuICAgIGNvbnN0IGYgPSAoZXJyb3IpID0+IHtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVFbXB0eTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLmNhdGNoIHdpdGggc3BlY2lmaWMgc2tpcE5vdGlmaWNhdGlvbiBmdW5jdGlvbiAhISFcclxuICAgKiBbbmctcGFja2FnciBpc3N1ZXMgNjk2XXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XHJcbiAgICpcclxuICAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxyXG4gICAqIEBwYXJhbSBjYWxsYmFja1xyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIG1lc3NhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGNhdGNoU2tpcChza2lwTm90aWZpY2F0aW9uPzogKGVycm9yKSA9PiBhbnksIGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGYgPSAoZXJyb3IpID0+IHtcclxuICAgICAgY29uc3QgX2Vycm9yID0gY2FsbGJhY2sgJiYgY2FsbGJhY2soZXJyb3IpO1xyXG4gICAgICBjb25zdCBfc2tpcE5vdGlmaWNhdGlvbiA9IHNraXBOb3RpZmljYXRpb24gJiYgc2tpcE5vdGlmaWNhdGlvbihlcnJvcik7XHJcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihuZXcgRW9FcnJvcihfZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IF9lcnJvciA6IGVycm9yLCBuYW1lLCBtZXNzYWdlLCBfc2tpcE5vdGlmaWNhdGlvbikpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIG9uIE9ic2VydmFibGUuY2F0Y2ggISEhXHJcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XHJcbiAgICpcclxuICAgKiBAcGFyYW0gY2FsbGJhY2tcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBtZXNzYWdlXHJcbiAgICogQHBhcmFtIHNraXBOb3RpZmljYXRpb25cclxuICAgKiBAcmV0dXJuIChlcnJvcikgPT4gT2JzZXJ2YWJsZTxuZXZlcj5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGNhdGNoKGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHNraXBOb3RpZmljYXRpb24/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBmID0gKGVycm9yKSA9PiB7XHJcbiAgICAgIGNvbnN0IF9lcnJvciA9IGNhbGxiYWNrICYmIGNhbGxiYWNrKGVycm9yKTtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKG5ldyBFb0Vycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLnN1YnNjcmliZSAhISFcclxuICAgKiBbbmctcGFja2FnciBpc3N1ZXNde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBjYWxsYmFja1xyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxyXG4gICAqIEByZXR1cm4gKGVycm9yKSA9PiB2b2lkXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyB0aHJvdyhjYWxsYmFjaz86IChlcnJvcikgPT4gYW55LCBuYW1lPzogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nLCBza2lwTm90aWZpY2F0aW9uPzogYm9vbGVhbikge1xyXG4gICAgY29uc3QgZiA9IChlcnJvcikgPT4ge1xyXG4gICAgICBjb25zdCBfZXJyb3IgPSBjYWxsYmFjayAmJiBjYWxsYmFjayhlcnJvcik7XHJcbiAgICAgIHRocm93IG5ldyBFb0Vycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIG9uIE9ic2VydmFibGUuc3Vic2NyaWJlIG9ubHkgaWYgeW91IHdhbnQgdG8gc2tpcCBub3RpZmljYXRpb24gLyB0b2FzdCEhIVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNhbGxiYWNrXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBza2lwTm90aWZpY2F0aW9uXHJcbiAgICogQHJldHVybiAoZXJyb3IpID0+IHZvaWRcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGxvZ0Vycm9yKGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHNraXBOb3RpZmljYXRpb24gPSB0cnVlKSB7XHJcbiAgICByZXR1cm4gVXRpbHMudGhyb3coY2FsbGJhY2ssIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGVsZW1lbnQgaXMgdmlzaWJsZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGVsZW1cclxuICAgKiBAcmV0dXJuIGJvb2xlYW5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGlzVmlzaWJsZShlbGVtOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIShlbGVtLm9mZnNldFdpZHRoIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0IHx8IGVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRCYXNlSHJlZigpIHtcclxuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmFzZScpWzBdLmdldEF0dHJpYnV0ZSgnaHJlZicpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBUcnVuY2F0ZSBhIHN0cmluZyAoZmlyc3QgYXJndW1lbnQpIGlmIGl0IGlzIGxvbmdlciB0aGFuIHRoZSBnaXZlbiBtYXhpbXVtIHN0cmluZyBsZW5ndGggKHNlY29uZCBhcmd1bWVudCkuXHJcbiAgICogUmV0dXJuIHRoZSB0cnVuY2F0ZWQgc3RyaW5nIHdpdGggYSAuLi4gZW5kaW5nIG90IHdoYXRzIHByb3ZpZGVkLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyBzdHJcclxuICAgKiBAcGFyYW0gbnVtYmVyIG51bVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyB0cnVuY2F0ZVN0cmluZyhzdHIsIG51bSwgZW5kaW5nID0gJy4uLicpIHtcclxuICAgIGlmIChzdHIubGVuZ3RoID4gbnVtKSB7XHJcbiAgICAgIGlmIChudW0gPiAzKSB7XHJcbiAgICAgICAgbnVtIC09IDM7XHJcbiAgICAgIH1cclxuICAgICAgc3RyID0gYCR7c3RyLnN1YnN0cmluZygwLCBudW0pfSR7ZW5kaW5nfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgVGltZVpvbmUgT2Zmc2VzdCBhcyBJU08gU3RyaW5nLlxyXG4gICAqXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldFRpbWV6b25lT2Zmc2V0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbW9tZW50KCkuZm9ybWF0KCdaJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGZvcm1hdE1haWxUbyh2YWx1ZTogRm9ybWF0ZWRNYWlsVG8sIGlzRW1haWw6IGJvb2xlYW4pOiBGb3JtYXRlZE1haWxUbyB7XHJcbiAgICBpZiAoaXNFbWFpbCAmJiAhIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpID8gdmFsdWUuam9pbigpLnJlcGxhY2UoLywvZywgJzsgJykgOiB2YWx1ZS5yZXBsYWNlKC8sL2csICc7ICcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBhcnJheVRvT2JqZWN0KGFyciA9IFtdLCBrZXlQcm9wZXJ0eT86IHN0cmluZyB8ICgobzogYW55KSA9PiBzdHJpbmcpLCB2YWx1ZVByb3BlcnR5Pzogc3RyaW5nIHwgKChvOiBhbnkpID0+IGFueSkpIHtcclxuICAgIGNvbnN0IGtleSA9IHR5cGVvZiBrZXlQcm9wZXJ0eSA9PT0gJ3N0cmluZycgPyAobzogYW55KSA9PiBvW2tleVByb3BlcnR5XSA6IGtleVByb3BlcnR5O1xyXG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgdmFsdWVQcm9wZXJ0eSA9PT0gJ3N0cmluZycgPyAobzogYW55KSA9PiBvW3ZhbHVlUHJvcGVydHldIDogdmFsdWVQcm9wZXJ0eTtcclxuICAgIHJldHVybiBhcnIucmVkdWNlKChhY2MsIGN1ciwgaSkgPT4ge1xyXG4gICAgICBhY2Nba2V5ID8ga2V5KGN1cikgOiBpXSA9IHZhbHVlID8gdmFsdWUoY3VyKSA6IGN1cjtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZm9ybURhdGFTdHJpbmdpZnkobzogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGYgPSAoa2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIGAvJHtVdGlscy5QUkVGX1JBTkdFVkFMVUV9KCR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfSkvYDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG8sIGYpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmb3JtRGF0YVBhcnNlKHN0cjogc3RyaW5nKTogYW55IHtcclxuICAgIGNvbnN0IGYgPSAoa2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJlxyXG4gICAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoYC8ke1V0aWxzLlBSRUZfUkFOR0VWQUxVRX0oYCkgJiZcclxuICAgICAgICB2YWx1ZS5lbmRzV2l0aCgnKS8nKVxyXG4gICAgICApIHtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyhVdGlscy5QUkVGX1JBTkdFVkFMVUUubGVuZ3RoICsgMiwgdmFsdWUubGVuZ3RoIC0gMik7XHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgUmFuZ2VWYWx1ZShwYXJzZWQub3BlcmF0b3IsIHBhcnNlZC5maXJzdFZhbHVlLCBwYXJzZWQuc2Vjb25kVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzdHIsIGYpO1xyXG4gIH1cclxufVxyXG4iXX0=
|