@wertzui/ngx-restworld-client 8.2.1 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/restworld-client.module.mjs +7 -3
- package/esm2020/lib/services/restworld-client.mjs +36 -14
- package/fesm2015/wertzui-ngx-restworld-client.mjs +43 -17
- package/fesm2015/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/fesm2020/wertzui-ngx-restworld-client.mjs +41 -17
- package/fesm2020/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/lib/restworld-client.module.d.ts +2 -1
- package/lib/restworld-client.module.d.ts.map +1 -1
- package/lib/services/restworld-client.d.ts +3 -1
- package/lib/services/restworld-client.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -50,6 +50,7 @@ import { RestWorldTableComponent } from './components/restworld-table/restworld-
|
|
|
50
50
|
import { RestWorldMenuButtonComponent } from './components/restworld-menu-button/restworld-menu-button.component';
|
|
51
51
|
import { RestWorldIdNavigationComponent } from './components/restworld-id-navigation/restworld-id-navigation.component';
|
|
52
52
|
import { RestWorldFormElementComponent, RestWorldInputCollectionComponent, RestWorldInputComponent, RestWorldInputDropdownComponent, RestWorldInputObjectComponent, RestWorldInputSimpleComponent, RestWorldInputTemplateComponent } from './components/restworld-inputs/restworld-inputs';
|
|
53
|
+
import { HalClientModule } from '@wertzui/ngx-hal-client';
|
|
53
54
|
import * as i0 from "@angular/core";
|
|
54
55
|
export function initializeSettings(settingsService) {
|
|
55
56
|
return async () => await settingsService.ensureInitialized();
|
|
@@ -110,7 +111,8 @@ RestworldClientModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
|
|
|
110
111
|
SplitButtonModule,
|
|
111
112
|
AvatarModule,
|
|
112
113
|
ContextMenuModule,
|
|
113
|
-
ChipModule
|
|
114
|
+
ChipModule,
|
|
115
|
+
HalClientModule], exports: [RESTworldListViewComponent,
|
|
114
116
|
RESTworldEditViewComponent,
|
|
115
117
|
RestWorldImageComponent,
|
|
116
118
|
RestWorldFileComponent,
|
|
@@ -175,7 +177,8 @@ RestworldClientModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
|
|
|
175
177
|
SplitButtonModule,
|
|
176
178
|
AvatarModule,
|
|
177
179
|
ContextMenuModule,
|
|
178
|
-
ChipModule
|
|
180
|
+
ChipModule,
|
|
181
|
+
HalClientModule] });
|
|
179
182
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestworldClientModule, decorators: [{
|
|
180
183
|
type: NgModule,
|
|
181
184
|
args: [{
|
|
@@ -237,6 +240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
|
|
|
237
240
|
AvatarModule,
|
|
238
241
|
ContextMenuModule,
|
|
239
242
|
ChipModule,
|
|
243
|
+
HalClientModule,
|
|
240
244
|
],
|
|
241
245
|
exports: [
|
|
242
246
|
RESTworldListViewComponent,
|
|
@@ -275,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
|
|
|
275
279
|
]
|
|
276
280
|
}]
|
|
277
281
|
}] });
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3Jlc3R3b3JsZC1jbGllbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNs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QUN2QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJ1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wYW5lbCc7XHJcbmltcG9ydCB7IFRhYlZpZXdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xyXG5pbXBvcnQgeyBTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2tlbGV0b24nO1xyXG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzc3Bpbm5lcic7XHJcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcclxuaW1wb3J0IHsgVHJpU3RhdGVDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdHJpc3RhdGVjaGVja2JveCc7XHJcbmltcG9ydCB7IEF2YXRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXZhdGFyJztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFZhbGRlbW9ydE1vZHVsZSB9IGZyb20gJ25neC12YWxkZW1vcnQnO1xyXG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJNb2R1bGUgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgQ29sb3JQaWNrZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbG9ycGlja2VyJztcclxuaW1wb3J0IHsgQ29udGV4dE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbnRleHRtZW51JztcclxuaW1wb3J0IHsgQ2hpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hpcCc7XHJcblxyXG5pbXBvcnQgeyBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3MvcmVzdHdvcmxkLWxpc3Qtdmlldy9yZXN0d29ybGQtbGlzdC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cy9yZXN0d29ybGQtZWRpdC12aWV3L3Jlc3R3b3JsZC1lZGl0LXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbiB9IGZyb20gJy4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgQXZhdGFyR2VuZXJhdG9yIH0gZnJvbSAnLi9zZXJ2aWNlcy9hdmF0YXItZ2VuZXJhdG9yJztcclxuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWltYWdlL3Jlc3R3b3JsZC1pbWFnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFJlc3RXb3JsZEZpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWZpbGUvcmVzdHdvcmxkLWZpbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2FmZVVybFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtdXJsLnBpcGUnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXNQaXBlIH0gZnJvbSAnLi9waXBlcy9hcy5waXBlJztcclxuaW1wb3J0IHsgU3BsaXRCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3NwbGl0YnV0dG9uJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1hdmF0YXIvcmVzdHdvcmxkLWF2YXRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtbGFiZWwvcmVzdHdvcmxkLWxhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLXZhbGlkYXRpb24tZXJyb3JzL3Jlc3R3b3JsZC12YWxpZGF0aW9uLWVycm9ycy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1mb3JtL3Jlc3R3b3JsZC1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC10YWJsZS9yZXN0d29ybGQtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkTWVudUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtbWVudS1idXR0b24vcmVzdHdvcmxkLW1lbnUtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZElkTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtaWQtbmF2aWdhdGlvbi9yZXN0d29ybGQtaWQtbmF2aWdhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRGb3JtRWxlbWVudENvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50LCBSZXN0V29ybGRJbnB1dENvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQsIFJlc3RXb3JsZElucHV0U2ltcGxlQ29tcG9uZW50LCBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0cyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVNldHRpbmdzKHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlKTogKCkgPT4gUHJvbWlzZTx2b2lkPiB7XHJcbiAgcmV0dXJuIGFzeW5jICgpID0+IGF3YWl0IHNldHRpbmdzU2VydmljZS5lbnN1cmVJbml0aWFsaXplZCgpO1xyXG59XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgUkVTVHdvcmxkTGlzdFZpZXdDb21wb25lbnQsXHJcbiAgICBSRVNUd29ybGRFZGl0Vmlld0NvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEltYWdlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRmlsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEF2YXRhckNvbXBvbmVudCxcclxuICAgIFNhZmVVcmxQaXBlLFxyXG4gICAgQXNQaXBlLFxyXG4gICAgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRMYWJlbENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZvcm1FbGVtZW50Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0Q29sbGVjdGlvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0T2JqZWN0Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRWYWxpZGF0aW9uRXJyb3JzQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRUZW1wbGF0ZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZvcm1Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRUYWJsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZE1lbnVCdXR0b25Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJZE5hdmlnYXRpb25Db21wb25lbnQsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUYWJsZU1vZHVsZSxcclxuICAgIFRvb2x0aXBNb2R1bGUsXHJcbiAgICBTY3JvbGxpbmdNb2R1bGUsXHJcbiAgICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgICBJbnB1dE51bWJlck1vZHVsZSxcclxuICAgIENhbGVuZGFyTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hNb2R1bGUsXHJcbiAgICBDb25maXJtRGlhbG9nTW9kdWxlLFxyXG4gICAgVG9hc3RNb2R1bGUsXHJcbiAgICBNZXNzYWdlc01vZHVsZSxcclxuICAgIFBhbmVsTW9kdWxlLFxyXG4gICAgVGFiVmlld01vZHVsZSxcclxuICAgIFNrZWxldG9uTW9kdWxlLFxyXG4gICAgUHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxyXG4gICAgUmlwcGxlTW9kdWxlLFxyXG4gICAgVHJpU3RhdGVDaGVja2JveE1vZHVsZSxcclxuICAgIEF2YXRhck1vZHVsZSxcclxuICAgIERyb3Bkb3duTW9kdWxlLFxyXG4gICAgTXVsdGlTZWxlY3RNb2R1bGUsXHJcbiAgICBGaWxlVXBsb2FkTW9kdWxlLFxyXG4gICAgVmFsZGVtb3J0TW9kdWxlLFxyXG4gICAgSW1hZ2VDcm9wcGVyTW9kdWxlLFxyXG4gICAgRGlhbG9nTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgQ29sb3JQaWNrZXJNb2R1bGUsXHJcbiAgICBEcmFnRHJvcE1vZHVsZSxcclxuICAgIFNwbGl0QnV0dG9uTW9kdWxlLFxyXG4gICAgQXZhdGFyTW9kdWxlLFxyXG4gICAgQ29udGV4dE1lbnVNb2R1bGUsXHJcbiAgICBDaGlwTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgUkVTVHdvcmxkTGlzdFZpZXdDb21wb25lbnQsXHJcbiAgICBSRVNUd29ybGRFZGl0Vmlld0NvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEltYWdlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRmlsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEF2YXRhckNvbXBvbmVudCxcclxuICAgIFNhZmVVcmxQaXBlLFxyXG4gICAgQXNQaXBlLFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRMYWJlbENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZvcm1FbGVtZW50Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0Q29sbGVjdGlvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0T2JqZWN0Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRWYWxpZGF0aW9uRXJyb3JzQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRUZW1wbGF0ZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZvcm1Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRUYWJsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZE1lbnVCdXR0b25Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJZE5hdmlnYXRpb25Db21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbixcclxuICAgIEF2YXRhckdlbmVyYXRvcixcclxuICAgIENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBGb3JtU2VydmljZSxcclxuICAgIE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IGluaXRpYWxpemVTZXR0aW5ncyxcclxuICAgICAgZGVwczogW1NldHRpbmdzU2VydmljZV0sXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3R3b3JsZENsaWVudE1vZHVsZSB7IH1cclxuIl19
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3Jlc3R3b3JsZC1jbGllbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNs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RSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsVUFBVSxFQUFFLGtCQUFrQjs0QkFDOUIsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDOzRCQUN2QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJ1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wYW5lbCc7XHJcbmltcG9ydCB7IFRhYlZpZXdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xyXG5pbXBvcnQgeyBTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2tlbGV0b24nO1xyXG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzc3Bpbm5lcic7XHJcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcclxuaW1wb3J0IHsgVHJpU3RhdGVDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdHJpc3RhdGVjaGVja2JveCc7XHJcbmltcG9ydCB7IEF2YXRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXZhdGFyJztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFZhbGRlbW9ydE1vZHVsZSB9IGZyb20gJ25neC12YWxkZW1vcnQnO1xyXG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJNb2R1bGUgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgQ29sb3JQaWNrZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbG9ycGlja2VyJztcclxuaW1wb3J0IHsgQ29udGV4dE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbnRleHRtZW51JztcclxuaW1wb3J0IHsgQ2hpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hpcCc7XHJcblxyXG5pbXBvcnQgeyBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3MvcmVzdHdvcmxkLWxpc3Qtdmlldy9yZXN0d29ybGQtbGlzdC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cy9yZXN0d29ybGQtZWRpdC12aWV3L3Jlc3R3b3JsZC1lZGl0LXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbiB9IGZyb20gJy4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgQXZhdGFyR2VuZXJhdG9yIH0gZnJvbSAnLi9zZXJ2aWNlcy9hdmF0YXItZ2VuZXJhdG9yJztcclxuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWltYWdlL3Jlc3R3b3JsZC1pbWFnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFJlc3RXb3JsZEZpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWZpbGUvcmVzdHdvcmxkLWZpbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2FmZVVybFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtdXJsLnBpcGUnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXNQaXBlIH0gZnJvbSAnLi9waXBlcy9hcy5waXBlJztcclxuaW1wb3J0IHsgU3BsaXRCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3NwbGl0YnV0dG9uJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1hdmF0YXIvcmVzdHdvcmxkLWF2YXRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtbGFiZWwvcmVzdHdvcmxkLWxhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLXZhbGlkYXRpb24tZXJyb3JzL3Jlc3R3b3JsZC12YWxpZGF0aW9uLWVycm9ycy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1mb3JtL3Jlc3R3b3JsZC1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC10YWJsZS9yZXN0d29ybGQtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkTWVudUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtbWVudS1idXR0b24vcmVzdHdvcmxkLW1lbnUtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZElkTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtaWQtbmF2aWdhdGlvbi9yZXN0d29ybGQtaWQtbmF2aWdhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRGb3JtRWxlbWVudENvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50LCBSZXN0V29ybGRJbnB1dENvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQsIFJlc3RXb3JsZElucHV0U2ltcGxlQ29tcG9uZW50LCBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0cyc7XHJcbmltcG9ydCB7IEhhbENsaWVudE1vZHVsZSB9IGZyb20gJ0B3ZXJ0enVpL25neC1oYWwtY2xpZW50JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplU2V0dGluZ3Moc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UpOiAoKSA9PiBQcm9taXNlPHZvaWQ+IHtcclxuICByZXR1cm4gYXN5bmMgKCkgPT4gYXdhaXQgc2V0dGluZ3NTZXJ2aWNlLmVuc3VyZUluaXRpYWxpemVkKCk7XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCxcclxuICAgIFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW1hZ2VDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRGaWxlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgU2FmZVVybFBpcGUsXHJcbiAgICBBc1BpcGUsXHJcbiAgICBSZXN0V29ybGRBdmF0YXJDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZExhYmVsQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRm9ybUVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFNpbXBsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRm9ybUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkTWVudUJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElkTmF2aWdhdGlvbkNvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFRhYmxlTW9kdWxlLFxyXG4gICAgVG9vbHRpcE1vZHVsZSxcclxuICAgIFNjcm9sbGluZ01vZHVsZSxcclxuICAgIElucHV0VGV4dE1vZHVsZSxcclxuICAgIElucHV0TnVtYmVyTW9kdWxlLFxyXG4gICAgQ2FsZW5kYXJNb2R1bGUsXHJcbiAgICBDaGVja2JveE1vZHVsZSxcclxuICAgIENvbmZpcm1EaWFsb2dNb2R1bGUsXHJcbiAgICBUb2FzdE1vZHVsZSxcclxuICAgIE1lc3NhZ2VzTW9kdWxlLFxyXG4gICAgUGFuZWxNb2R1bGUsXHJcbiAgICBUYWJWaWV3TW9kdWxlLFxyXG4gICAgU2tlbGV0b25Nb2R1bGUsXHJcbiAgICBQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXHJcbiAgICBSaXBwbGVNb2R1bGUsXHJcbiAgICBUcmlTdGF0ZUNoZWNrYm94TW9kdWxlLFxyXG4gICAgQXZhdGFyTW9kdWxlLFxyXG4gICAgRHJvcGRvd25Nb2R1bGUsXHJcbiAgICBNdWx0aVNlbGVjdE1vZHVsZSxcclxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXHJcbiAgICBWYWxkZW1vcnRNb2R1bGUsXHJcbiAgICBJbWFnZUNyb3BwZXJNb2R1bGUsXHJcbiAgICBEaWFsb2dNb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBDb2xvclBpY2tlck1vZHVsZSxcclxuICAgIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgU3BsaXRCdXR0b25Nb2R1bGUsXHJcbiAgICBBdmF0YXJNb2R1bGUsXHJcbiAgICBDb250ZXh0TWVudU1vZHVsZSxcclxuICAgIENoaXBNb2R1bGUsXHJcbiAgICBIYWxDbGllbnRNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCxcclxuICAgIFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW1hZ2VDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRGaWxlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgU2FmZVVybFBpcGUsXHJcbiAgICBBc1BpcGUsXHJcbiAgICBSZXN0V29ybGRJbnB1dENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZExhYmVsQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRm9ybUVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFNpbXBsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRm9ybUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkTWVudUJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElkTmF2aWdhdGlvbkNvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBSZXN0V29ybGRDbGllbnRDb2xsZWN0aW9uLFxyXG4gICAgQXZhdGFyR2VuZXJhdG9yLFxyXG4gICAgQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIEZvcm1TZXJ2aWNlLFxyXG4gICAgTWVzc2FnZVNlcnZpY2UsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcclxuICAgICAgdXNlRmFjdG9yeTogaW5pdGlhbGl6ZVNldHRpbmdzLFxyXG4gICAgICBkZXBzOiBbU2V0dGluZ3NTZXJ2aWNlXSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdHdvcmxkQ2xpZW50TW9kdWxlIHsgfVxyXG4iXX0=
|
|
@@ -27,20 +27,33 @@ export class RestWorldClient {
|
|
|
27
27
|
}
|
|
28
28
|
return combinedHeaders;
|
|
29
29
|
}
|
|
30
|
-
static
|
|
30
|
+
static createHeadersWithoutBody(version, accept) {
|
|
31
31
|
if (version)
|
|
32
32
|
return new HttpHeaders({
|
|
33
|
-
'Accept': `${
|
|
34
|
-
'Content-Type':
|
|
33
|
+
'Accept': `${accept ?? 'application/hal+json'}; v=${version}`,
|
|
34
|
+
'Content-Type': `v=${version}`
|
|
35
35
|
});
|
|
36
|
-
return new HttpHeaders(
|
|
36
|
+
return new HttpHeaders({
|
|
37
|
+
'Accept': `${accept ?? 'application/hal+json'};`,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
static createHeadersWithBody(version, accept, contentType) {
|
|
41
|
+
if (version)
|
|
42
|
+
return new HttpHeaders({
|
|
43
|
+
'Accept': `${accept ?? 'application/hal+json'}; v=${version}`,
|
|
44
|
+
'Content-Type': `${contentType ?? 'application/json'}; v=${version}`
|
|
45
|
+
});
|
|
46
|
+
return new HttpHeaders({
|
|
47
|
+
'Accept': `${accept ?? 'application/hal+json'};`,
|
|
48
|
+
'Content-Type': `${contentType ?? 'application/json'};`
|
|
49
|
+
});
|
|
37
50
|
}
|
|
38
51
|
async delete(resource) {
|
|
39
52
|
const deleteLink = resource.findLink('delete');
|
|
40
53
|
if (!deleteLink)
|
|
41
54
|
throw new Error(`The resource ${resource} does not have a delete link.`);
|
|
42
55
|
const uri = deleteLink.href;
|
|
43
|
-
const header = RestWorldClient.
|
|
56
|
+
const header = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'application/hal+json');
|
|
44
57
|
const response = await this.halClient.delete(uri, ProblemDetails, header);
|
|
45
58
|
return response;
|
|
46
59
|
}
|
|
@@ -63,7 +76,7 @@ export class RestWorldClient {
|
|
|
63
76
|
return formsAndProblems;
|
|
64
77
|
}
|
|
65
78
|
async getForm(url) {
|
|
66
|
-
const header = RestWorldClient.
|
|
79
|
+
const header = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'application/prs.hal-forms+json');
|
|
67
80
|
return this._halClient.get(url, FormsResource, ProblemDetails, header);
|
|
68
81
|
}
|
|
69
82
|
getAllLinksFromHome() {
|
|
@@ -145,7 +158,7 @@ export class RestWorldClient {
|
|
|
145
158
|
const link = new Link();
|
|
146
159
|
link.href = uri;
|
|
147
160
|
const filledUri = link.fillTemplate(parameters);
|
|
148
|
-
const defaultHeaders = RestWorldClient.
|
|
161
|
+
const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version);
|
|
149
162
|
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
150
163
|
const response = await this.halClient.get(filledUri, PagedListResource, ProblemDetails, combinedHeaders);
|
|
151
164
|
return response;
|
|
@@ -154,11 +167,20 @@ export class RestWorldClient {
|
|
|
154
167
|
const link = new Link();
|
|
155
168
|
link.href = uri;
|
|
156
169
|
const filledUri = link.fillTemplate(parameters);
|
|
157
|
-
const defaultHeaders = RestWorldClient.
|
|
170
|
+
const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'text/csv');
|
|
158
171
|
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
159
172
|
const response = await lastValueFrom(this.halClient.httpClient.get(filledUri, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));
|
|
160
173
|
return response;
|
|
161
174
|
}
|
|
175
|
+
async postListByUriAsCsv(uri, parameters, body, headers) {
|
|
176
|
+
const link = new Link();
|
|
177
|
+
link.href = uri;
|
|
178
|
+
const filledUri = link.fillTemplate(parameters);
|
|
179
|
+
const defaultHeaders = RestWorldClient.createHeadersWithBody(this._options.Version, 'text/csv');
|
|
180
|
+
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
181
|
+
const response = await lastValueFrom(this.halClient.httpClient.post(filledUri, body, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));
|
|
182
|
+
return response;
|
|
183
|
+
}
|
|
162
184
|
async getSingle(rel, id, headers, curie) {
|
|
163
185
|
if (!_.isNumber(id))
|
|
164
186
|
throw new Error('When supplying a rel, an ID must be supplied too.');
|
|
@@ -168,7 +190,7 @@ export class RestWorldClient {
|
|
|
168
190
|
return response;
|
|
169
191
|
}
|
|
170
192
|
async getSingleByUri(uri, headers) {
|
|
171
|
-
const defaultHeaders = RestWorldClient.
|
|
193
|
+
const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version);
|
|
172
194
|
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
173
195
|
const response = await this.halClient.get(uri, Resource, ProblemDetails, combinedHeaders);
|
|
174
196
|
return response;
|
|
@@ -181,7 +203,7 @@ export class RestWorldClient {
|
|
|
181
203
|
throw new Error(`The save link ${saveLink} does not have a save name.`);
|
|
182
204
|
const uri = saveLink.href;
|
|
183
205
|
const method = saveLink.name.toLowerCase();
|
|
184
|
-
const header = RestWorldClient.
|
|
206
|
+
const header = RestWorldClient.createHeadersWithBody(this._options.Version);
|
|
185
207
|
let response;
|
|
186
208
|
switch (method) {
|
|
187
209
|
case 'put':
|
|
@@ -198,7 +220,7 @@ export class RestWorldClient {
|
|
|
198
220
|
async submit(template, formValues) {
|
|
199
221
|
const uri = template.target || '';
|
|
200
222
|
const method = template.method?.toLowerCase();
|
|
201
|
-
const header = RestWorldClient.
|
|
223
|
+
const header = RestWorldClient.createHeadersWithBody(this._options.Version, 'application/prs.hal-forms+json');
|
|
202
224
|
let response;
|
|
203
225
|
switch (method) {
|
|
204
226
|
case 'put':
|
|
@@ -224,7 +246,7 @@ export class RestWorldClient {
|
|
|
224
246
|
return fullRel;
|
|
225
247
|
}
|
|
226
248
|
async getHomeForced() {
|
|
227
|
-
const header = RestWorldClient.
|
|
249
|
+
const header = RestWorldClient.createHeadersWithoutBody(this._options.Version);
|
|
228
250
|
const response = await this.halClient.get(this._options.BaseUrl, Resource, ProblemDetails, header);
|
|
229
251
|
return response;
|
|
230
252
|
}
|
|
@@ -243,11 +265,11 @@ export class RestWorldClient {
|
|
|
243
265
|
return this.deleteByUrl(url, timestamp);
|
|
244
266
|
}
|
|
245
267
|
async deleteByUrl(url, timestamp) {
|
|
246
|
-
let header = RestWorldClient.
|
|
268
|
+
let header = RestWorldClient.createHeadersWithoutBody(this._options.Version);
|
|
247
269
|
if (timestamp !== undefined)
|
|
248
270
|
header = header.append("ETag", timestamp);
|
|
249
271
|
const response = await this.halClient.delete(url, ProblemDetails, header);
|
|
250
272
|
return response;
|
|
251
273
|
}
|
|
252
274
|
}
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQWEsSUFBSSxFQUFFLGlCQUFpQixFQUFZLFFBQVEsRUFBb0MsTUFBTSx5QkFBeUIsQ0FBQztBQUNsSixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHckMsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxVQUFxQixFQUNyQixRQUEwQjtRQUQxQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQ2hDLENBQUM7SUFFTCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLGVBQXdDLEVBQUUsWUFBcUMsRUFBRSxpQkFBMEI7UUFDdkksSUFBSSxDQUFDLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZTtZQUNsQixPQUFPLFlBQVksQ0FBQztRQUV0QixJQUFJLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFFdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFp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LFdBQVcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBVyxFQUFFLFNBQWtCO1FBQ3RELElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxRixJQUFJLFNBQVMsS0FBSyxTQUFTO1lBQ3pCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFMUUsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IEZvcm1zUmVzb3VyY2UsIEhhbENsaWVudCwgTGluaywgUGFnZWRMaXN0UmVzb3VyY2UsIFByb3BlcnR5LCBSZXNvdXJjZSwgUmVzb3VyY2VEdG8sIFRlbXBsYXRlLCBUZW1wbGF0ZXMgfSBmcm9tIFwiQHdlcnR6dWkvbmd4LWhhbC1jbGllbnRcIjtcclxuaW1wb3J0IHsgTGlua05hbWVzIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9saW5rLW5hbWVzXCI7XHJcbmltcG9ydCB7IFByb2JsZW1EZXRhaWxzIH0gZnJvbSBcIi4uL21vZGVscy9wcm9ibGVtLWRldGFpbHNcIjtcclxuaW1wb3J0IHsgUmVzdFdvcmxkT3B0aW9ucyB9IGZyb20gXCIuLi9tb2RlbHMvcmVzdHdvcmxkLW9wdGlvbnNcIjtcclxuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRDbGllbnQge1xyXG4gIHByaXZhdGUgX2RlZmF1bHRDdXJpZT86IHN0cmluZztcclxuICBwcml2YXRlIF9ob21lUmVzb3VyY2U/OiBSZXNvdXJjZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9oYWxDbGllbnQ6IEhhbENsaWVudCxcclxuICAgIHByaXZhdGUgX29wdGlvbnM6IFJlc3RXb3JsZE9wdGlvbnNcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhbENsaWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9oYWxDbGllbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb21iaW5lSGVhZGVycyhvcmlnaW5hbEhlYWRlcnM6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkLCBoZWFkZXJzVG9BZGQ6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkLCBvdmVyd3JpdGVFeGlzdGluZzogYm9vbGVhbikge1xyXG4gICAgaWYgKCFoZWFkZXJzVG9BZGQpXHJcbiAgICAgIHJldHVybiBvcmlnaW5hbEhlYWRlcnM7XHJcbiAgICBpZiAoIW9yaWdpbmFsSGVhZGVycylcclxuICAgICAgcmV0dXJuIGhlYWRlcnNUb0FkZDtcclxuXHJcbiAgICBsZXQgY29tYmluZWRIZWFkZXJzID0gb3JpZ2luYWxIZWFkZXJzO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGhlYWRlcnNUb0FkZC5rZXlzKSB7XHJcbiAgICAgIGlmICghY29tYmluZWRIZWFkZXJzLmhhcyhrZXkpIHx8IG92ZXJ3cml0ZUV4aXN0aW5nKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyVmFsdWVzVG9BZGQgPSBoZWFkZXJzVG9BZGQuZ2V0QWxsKGtleSk7XHJcbiAgICAgICAgaWYgKGhlYWRlclZhbHVlc1RvQWRkKVxyXG4gICAgICAgICAgY29tYmluZWRIZWFkZXJzID0gY29tYmluZWRIZWFkZXJzLnNldChrZXksIGhlYWRlclZhbHVlc1RvQWRkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb21iaW5lZEhlYWRlcnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVIZWFkZXJzKG1lZGlhVHlwZT86ICdhcHBsaWNhdGlvbi9oYWwranNvbicgfCAnYXBwbGljYXRpb24vcHJzLmhhbC1mb3Jtcytqc29uJyB8ICd0ZXh0L2NzdicsIHZlcnNpb24/OiBudW1iZXIpOiBIdHRwSGVhZGVycyB7XHJcbiAgICBpZiAodmVyc2lvbilcclxuICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0FjY2VwdCc6IGAke21lZGlhVHlwZSB8fCAnYXBwbGljYXRpb24vaGFsK2pzb24nfTsgdj0ke3ZlcnNpb259YCxcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogYCR7bWVkaWFUeXBlIHx8ICdhcHBsaWNhdGlvbi9oYWwranNvbid9OyB2PSR7dmVyc2lvbn1gXHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTx2b2lkIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBkZWxldGVMaW5rID0gcmVzb3VyY2UuZmluZExpbmsoJ2RlbGV0ZScpO1xyXG4gICAgaWYgKCFkZWxldGVMaW5rKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSByZXNvdXJjZSAke3Jlc291cmNlfSBkb2VzIG5vdCBoYXZlIGEgZGVsZXRlIGxpbmsuYCk7XHJcbiAgICBjb25zdCB1cmkgPSBkZWxldGVMaW5rLmhyZWY7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZGVsZXRlKHVyaSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGVuc3VyZUhvbWVSZXNvdXJjZUlzU2V0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLl9ob21lUmVzb3VyY2UpIHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldEhvbWVGb3JjZWQoKTtcclxuICAgICAgaWYgKFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIGhvbWUgcmVzb3VyY2UgZnJvbSAke3RoaXMuX29wdGlvbnMuQmFzZVVybH0gd2l0aCBWZXJzaW9uICR7dGhpcy5fb3B0aW9ucy5WZXJzaW9ufS4gUmVzcG9uc2Ugd2FzOiAke3Jlc3BvbnNlfWApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghcmVzcG9uc2UuYm9keSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIGhvbWUgcmVzb3VyY2UgZnJvbSAke3RoaXMuX29wdGlvbnMuQmFzZVVybH0gd2l0aCBWZXJzaW9uICR7dGhpcy5fb3B0aW9ucy5WZXJzaW9ufS4gUmVzcG9uc2Ugd2FzIGVtcHR5LmApO1xyXG4gICAgICB0aGlzLl9ob21lUmVzb3VyY2UgPSByZXNwb25zZS5ib2R5O1xyXG4gICAgICB0aGlzLnNldERlZmF1bHRDdXJpZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbEZvcm1zKHJlc291cmNlOiBSZXNvdXJjZSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEZvcm1zUmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz5bXT4ge1xyXG4gICAgY29uc3QgdXJscyA9IHJlc291cmNlLmdldEZvcm1MaW5rSHJlZnMoKTtcclxuICAgIGNvbnN0IGZvcm1zUHJvbWlzZXMgPSB1cmxzLm1hcCh1cmwgPT4gdGhpcy5nZXRGb3JtKHVybCkpO1xyXG4gICAgY29uc3QgZm9ybXNBbmRQcm9ibGVtcyA9IGF3YWl0IFByb21pc2UuYWxsKGZvcm1zUHJvbWlzZXMpO1xyXG4gICAgcmV0dXJuIGZvcm1zQW5kUHJvYmxlbXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybSh1cmw6IHN0cmluZyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEZvcm1zUmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9wcnMuaGFsLWZvcm1zK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhbENsaWVudC5nZXQodXJsLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBbGxMaW5rc0Zyb21Ib21lKCk6IHsgW3JlbDogc3RyaW5nXTogTGlua1tdIHwgdW5kZWZpbmVkOyB9IHtcclxuICAgIGlmICghdGhpcy5faG9tZVJlc291cmNlKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0hvbWUgcmVzb3VyY2UgaXMgbm90IHNldC4gQ2FsbCBlbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpIGZpcnN0LicpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9ob21lUmVzb3VyY2UuX2xpbmtzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3Q8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4ocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRBbGxQYWdlc0Zyb21MaXN0QnlVcmk8VExpc3REdG8+KHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3RCeVVyaTxUTGlzdER0byBleHRlbmRzIFJlc291cmNlRHRvPih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaTxUTGlzdER0bz4odXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHk/Ll9lbWJlZGRlZD8uaXRlbXMpXHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuXHJcbiAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmJvZHkuX2VtYmVkZGVkLml0ZW1zO1xyXG4gICAgbGV0IGxhc3RSZXNwb25zZSA9IHJlc3BvbnNlO1xyXG5cclxuICAgIHdoaWxlICgobGFzdFJlc3BvbnNlPy5ib2R5Py5fbGlua3M/Lm5leHQ/Lmxlbmd0aCA/PyAwKSA+IDApIHtcclxuICAgICAgLy8gR2V0IHRoZSBuZXh0IHJlc3BvbnNlXHJcbiAgICAgIGNvbnN0IG5leHRMaW5rcyA9IGxhc3RSZXNwb25zZS5ib2R5Py5fbGlua3MubmV4dDtcclxuICAgICAgY29uc3QgbmV4dExpbmsgPSBuZXh0TGlua3MgPyBuZXh0TGlua3NbMF06IHVuZGVmaW5lZDtcclxuICAgICAgY29uc3QgbmV4dEhyZWYgPSBuZXh0TGluaz8uaHJlZjtcclxuICAgICAgaWYgKG5leHRIcmVmKSB7XHJcbiAgICAgICAgbGFzdFJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRMaXN0QnlVcmk8VExpc3REdG8+KG5leHRIcmVmLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICAgICAgaWYgKCFsYXN0UmVzcG9uc2Uub2sgfHwgUHJvYmxlbURldGFpbHMuaXNQcm9ibGVtRGV0YWlscyhsYXN0UmVzcG9uc2UuYm9keSkgfHwgIWxhc3RSZXNwb25zZS5ib2R5KVxyXG4gICAgICAgICAgcmV0dXJuIGxhc3RSZXNwb25zZTtcclxuXHJcbiAgICAgICAgLy8gQ29tYmluZSB0aGUgZW1iZWRkZWQgaXRlbXNcclxuICAgICAgICBsYXN0UmVzcG9uc2UuYm9keT8uX2VtYmVkZGVkPy5pdGVtcz8uZm9yRWFjaChyID0+IGl0ZW1zLnB1c2gocikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gV2UgY29tYmluZWQgZXZlcnl0aGluZywgc28gdGhlcmUgaXMganVzdCBvbmUgYmlnIHBhZ2VcclxuICAgIHJlc3BvbnNlLmJvZHkudG90YWxQYWdlcyA9IDE7XHJcbiAgICByZXNwb25zZS5ib2R5Ll9saW5rcy5uZXh0ID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxUZW1wbGF0ZXMocmVzb3VyY2U6IFJlc291cmNlKTogUHJvbWlzZTxUZW1wbGF0ZXM+IHtcclxuICAgIGNvbnN0IGZvcm1SZXNwb25zZXMgPSBhd2FpdCB0aGlzLmdldEFsbEZvcm1zKHJlc291cmNlKTtcclxuXHJcbiAgICBjb25zdCBmYWlsZWRSZXNwb25zZXMgPSBmb3JtUmVzcG9uc2VzLmZpbHRlcihyZXNwb25zZSA9PiAhcmVzcG9uc2Uub2sgfHwgUHJvYmxlbURldGFpbHMuaXNQcm9ibGVtRGV0YWlscyhyZXNwb25zZS5ib2R5KSB8fCAhcmVzcG9uc2UuYm9keSk7XHJcbiAgICBpZiAoZmFpbGVkUmVzcG9uc2VzLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlIG9mIGZhaWxlZFJlc3BvbnNlcykge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3Igd2hpbGUgbG9hZGluZyB0aGUgcmVzcG9uc2UgZnJvbSAke3Jlc3BvbnNlLnVybH0sIFN0YXR1cyAke3Jlc3BvbnNlLnN0YXR1c30gLSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9LCBDb250ZW50OiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmJvZHkpfWApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1UZW1wbGF0ZXMgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5mb3JtUmVzcG9uc2VzLm1hcChyZXNwb25zZSA9PiAocmVzcG9uc2UuYm9keSBhcyBGb3Jtc1Jlc291cmNlKS5fdGVtcGxhdGVzKSkgYXMgVGVtcGxhdGVzO1xyXG5cclxuICAgIHJldHVybiBmb3JtVGVtcGxhdGVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExpbmtGcm9tSG9tZShyZWw6IHN0cmluZywgbmFtZT86IHN0cmluZywgY3VyaWU/OiBzdHJpbmcpOiBMaW5rIHtcclxuICAgIGNvbnN0IGxpbmtzID0gdGhpcy5nZXRMaW5rc0Zyb21Ib21lKHJlbCwgY3VyaWUpO1xyXG5cclxuICAgIGNvbnN0IGxpbmsgPSBuYW1lID8gbGlua3MuZmluZChsID0+IGwubmFtZSA9PT0gbmFtZSkgOiBsaW5rc1swXTtcclxuXHJcbiAgICBpZiAoIWxpbmspXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGhvbWUgcmVzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIGxpbmsgd2l0aCB0aGUgcmVsICcke3RoaXMuZ2V0RnVsbFJlbChyZWwsIGN1cmllKX0nIGFuZCB0aGUgbmFtZSAnJHtuYW1lfScuYCk7XHJcblxyXG4gICAgcmV0dXJuIGxpbms7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TGlua3NGcm9tSG9tZShyZWw6IHN0cmluZywgY3VyaWU/OiBzdHJpbmcpOiBMaW5rW10ge1xyXG4gICAgaWYgKCF0aGlzLl9ob21lUmVzb3VyY2UpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSG9tZSByZXNvdXJjZSBpcyBub3Qgc2V0LiBDYWxsIGVuc3VyZUhvbWVSZXNvdXJjZUlzU2V0KCkgZmlyc3QuJyk7XHJcblxyXG4gICAgY29uc3QgZnVsbFJlbCA9IHRoaXMuZ2V0RnVsbFJlbChyZWwsIGN1cmllKTtcclxuICAgIGNvbnN0IGxpbmtzID0gdGhpcy5faG9tZVJlc291cmNlLl9saW5rc1tmdWxsUmVsXTtcclxuICAgIGlmICghbGlua3MgfHwgbGlua3MubGVuZ3RoID09PSAwKVxyXG4gICAgICB0aHJvdyBFcnJvcihgVGhlIGhvbWUgcmVzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIGxpbmsgd2l0aCB0aGUgcmVsICcke2Z1bGxSZWx9Jy5gKTtcclxuXHJcbiAgICByZXR1cm4gbGlua3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlzdDxUTGlzdER0byBleHRlbmRzIFJlc291cmNlRHRvPihyZWw6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgY3VyaWU/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxQYWdlZExpc3RSZXNvdXJjZTxUTGlzdER0bz4gfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtGcm9tSG9tZShyZWwsIExpbmtOYW1lcy5nZXRMaXN0LCBjdXJpZSk7XHJcbiAgICBjb25zdCB1cmkgPSBsaW5rLmhyZWZcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0TGlzdEJ5VXJpPFRMaXN0RHRvPih1cmksIHBhcmFtZXRlcnMsIGhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMaXN0QXNDc3YocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8QmxvYj4gfCB1bmRlZmluZWQ+IHtcclxuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtGcm9tSG9tZShyZWwsIExpbmtOYW1lcy5nZXRMaXN0LCBjdXJpZSk7XHJcbiAgICBjb25zdCB1cmkgPSBsaW5rLmhyZWY7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaUFzQ3N2KHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldExpc3RCeVVyaTxUTGlzdER0byBleHRlbmRzIFJlc291cmNlRHRvPih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgbGluayA9IG5ldyBMaW5rKCk7XHJcbiAgICBsaW5rLmhyZWYgPSB1cmk7XHJcbiAgICBjb25zdCBmaWxsZWRVcmkgPSBsaW5rLmZpbGxUZW1wbGF0ZShwYXJhbWV0ZXJzKTtcclxuICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL2hhbCtqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IGNvbWJpbmVkSGVhZGVycyA9IFJlc3RXb3JsZENsaWVudC5jb21iaW5lSGVhZGVycyhoZWFkZXJzLCBkZWZhdWx0SGVhZGVycywgZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0PFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiwgUHJvYmxlbURldGFpbHM+KGZpbGxlZFVyaSwgUGFnZWRMaXN0UmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBjb21iaW5lZEhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMaXN0QnlVcmlBc0Nzdih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEJsb2I+IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBsaW5rID0gbmV3IExpbmsoKTtcclxuICAgIGxpbmsuaHJlZiA9IHVyaTtcclxuICAgIGNvbnN0IGZpbGxlZFVyaSA9IGxpbmsuZmlsbFRlbXBsYXRlKHBhcmFtZXRlcnMpO1xyXG4gICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygndGV4dC9jc3YnLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuaGFsQ2xpZW50Lmh0dHBDbGllbnQuZ2V0KGZpbGxlZFVyaSwgeyBoZWFkZXJzOiBjb21iaW5lZEhlYWRlcnMsIHJlc3BvbnNlVHlwZTogJ2Jsb2InLCBvYnNlcnZlOiAncmVzcG9uc2UnIH0pKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2luZ2xlKHJlbDogc3RyaW5nLCBpZDogbnVtYmVyLCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGlmICghXy5pc051bWJlcihpZCkpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignV2hlbiBzdXBwbHlpbmcgYSByZWwsIGFuIElEIG11c3QgYmUgc3VwcGxpZWQgdG9vLicpO1xyXG5cclxuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtGcm9tSG9tZShyZWwsIExpbmtOYW1lcy5nZXQsIGN1cmllKTtcclxuICAgIGNvbnN0IHVyaSA9IGxpbmsuZmlsbFRlbXBsYXRlKHsgaWQ6IGlkLnRvU3RyaW5nKCkgfSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmdldFNpbmdsZUJ5VXJpKHVyaSwgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNpbmdsZUJ5VXJpKHVyaTogc3RyaW5nLCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldCh1cmksIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgY29tYmluZWRIZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2F2ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3Qgc2F2ZUxpbmsgPSByZXNvdXJjZS5maW5kTGluaygnc2F2ZScpO1xyXG4gICAgaWYgKCFzYXZlTGluaylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcmVzb3VyY2UgJHtyZXNvdXJjZX0gZG9lcyBub3QgaGF2ZSBhIHNhdmUgbGluay5gKTtcclxuICAgIGlmICghc2F2ZUxpbmsubmFtZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc2F2ZSBsaW5rICR7c2F2ZUxpbmt9IGRvZXMgbm90IGhhdmUgYSBzYXZlIG5hbWUuYCk7XHJcblxyXG4gICAgY29uc3QgdXJpID0gc2F2ZUxpbmsuaHJlZjtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHNhdmVMaW5rLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9oYWwranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcblxyXG4gICAgbGV0IHJlc3BvbnNlO1xyXG4gICAgc3dpdGNoIChtZXRob2QpIHtcclxuICAgICAgY2FzZSAncHV0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnB1dCh1cmksIHJlc291cmNlLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Bvc3QnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucG9zdCh1cmksIHJlc291cmNlLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHttZXRob2R9JyBpcyBub3QgYWxsb3dlZCBhcyBsaW5rIG5hbWUgZm9yIHRoZSBzYXZlIGxpbmsuIE9ubHkgJ1BPU1QnIGFuZCAnUFVUJyBhcmUgYWxsb3dlZC5gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc3VibWl0KHRlbXBsYXRlOiBUZW1wbGF0ZSwgZm9ybVZhbHVlczoge30pOiBQcm9taXNlPEh0dHBSZXNwb25zZTxGb3Jtc1Jlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCB1cmkgPSB0ZW1wbGF0ZS50YXJnZXQgfHwgJyc7XHJcbiAgICBjb25zdCBtZXRob2QgPSB0ZW1wbGF0ZS5tZXRob2Q/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vcHJzLmhhbC1mb3Jtcytqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuXHJcbiAgICBsZXQgcmVzcG9uc2U7XHJcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xyXG4gICAgICBjYXNlICdwdXQnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucHV0KHVyaSwgZm9ybVZhbHVlcywgRm9ybXNSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Bvc3QnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucG9zdCh1cmksIGZvcm1WYWx1ZXMsIEZvcm1zUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0KHVyaSwgRm9ybXNSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGdWxsUmVsKHJlbDogc3RyaW5nLCBjdXJpZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAvLyByZWwgYWxyZWFkeSBpbmNsdWRlcyBhIGN1cmllID0+IGp1c3QgcmV0dXJuIGl0XHJcbiAgICBpZiAocmVsLmluY2x1ZGVzKCc6JykpXHJcbiAgICAgIHJldHVybiByZWw7XHJcblxyXG4gICAgLy8gTm8gY3VyaWUgZ2l2ZW4gPT4gdXNlIGRlZmF1bHQgY3VyaWUuXHJcbiAgICBpZiAoIWN1cmllKVxyXG4gICAgICBjdXJpZSA9IHRoaXMuX2RlZmF1bHRDdXJpZTtcclxuXHJcbiAgICAvLyBDb21iaW5lIGN1cmllIGFuZCByZWxcclxuICAgIGNvbnN0IGZ1bGxSZWwgPSBgJHtjdXJpZX06JHtyZWx9YDtcclxuXHJcbiAgICByZXR1cm4gZnVsbFJlbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0SG9tZUZvcmNlZCgpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgaGVhZGVyID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL2hhbCtqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0KHRoaXMuX29wdGlvbnMuQmFzZVVybCwgUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0Q3VyaWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJpZXMgPSB0aGlzLl9ob21lUmVzb3VyY2U/Ll9saW5rcz8uY3VyaWVzO1xyXG4gICAgaWYgKCFjdXJpZXMgfHwgY3VyaWVzLmxlbmd0aCA9PT0gMCB8fCAhY3VyaWVzWzBdKVxyXG4gICAgICB0aGlzLl9kZWZhdWx0Q3VyaWUgPSB1bmRlZmluZWQ7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2RlZmF1bHRDdXJpZSA9IGN1cmllc1swXS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUJ5VGVtcGxhdGVBbmRGb3JtKHRlbXBsYXRlOiBUZW1wbGF0ZSwgZm9ybUdyb3VwOiBGb3JtR3JvdXA8e3RpbWVzdGFtcDogQWJzdHJhY3RDb250cm9sPHN0cmluZz59Pik6IFByb21pc2U8SHR0cFJlc3BvbnNlPHZvaWQgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IHVybCA9IHRlbXBsYXRlLnRhcmdldDtcclxuICAgIGlmKHVybCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgdGFyZ2V0IG9mIHRoZSBnaXZlbiB0ZW1wbGF0ZSBjYW5ub3QgYmUgdW5kZWZpbmVkLlwiKTtcclxuXHJcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBmb3JtR3JvdXAudmFsdWUudGltZXN0YW1wXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlQnlVcmwodXJsLCB0aW1lc3RhbXApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUJ5VXJsKHVybDogc3RyaW5nLCB0aW1lc3RhbXA/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTx2b2lkIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBsZXQgaGVhZGVyID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL2hhbCtqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuXHJcbiAgICBpZiAodGltZXN0YW1wICE9PSB1bmRlZmluZWQpXHJcbiAgICAgIGhlYWRlciA9IGhlYWRlci5hcHBlbmQoXCJFVGFnXCIsIHRpbWVzdGFtcCk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5kZWxldGUodXJsLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQWEsSUFBSSxFQUFFLGlCQUFpQixFQUFZLFFBQVEsRUFBb0MsTUFBTSx5QkFBeUIsQ0FBQztBQUNsSixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHckMsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxVQUFxQixFQUNyQixRQUEwQjtRQUQxQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQ2hDLENBQUM7SUFFTCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLGVBQXdDLEVBQUUsWUFBcUMsRUFBRSxpQkFBMEI7UUFDdkksSUFBSSxDQUFDLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZTtZQUNsQixPQUFPLFlBQVksQ0FBQztRQUV0QixJQUFJLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFFdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFp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UyxDQUFBO1FBRTNDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBVyxFQUFFLFNBQWtCO1FBQ3RELElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdFLElBQUksU0FBUyxLQUFLLFNBQVM7WUFDekIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUxRSxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgRm9ybXNSZXNvdXJjZSwgSGFsQ2xpZW50LCBMaW5rLCBQYWdlZExpc3RSZXNvdXJjZSwgUHJvcGVydHksIFJlc291cmNlLCBSZXNvdXJjZUR0bywgVGVtcGxhdGUsIFRlbXBsYXRlcyB9IGZyb20gXCJAd2VydHp1aS9uZ3gtaGFsLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBMaW5rTmFtZXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2xpbmstbmFtZXNcIjtcclxuaW1wb3J0IHsgUHJvYmxlbURldGFpbHMgfSBmcm9tIFwiLi4vbW9kZWxzL3Byb2JsZW0tZGV0YWlsc1wiO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRPcHRpb25zIH0gZnJvbSBcIi4uL21vZGVscy9yZXN0d29ybGQtb3B0aW9uc1wiO1xyXG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZENsaWVudCB7XHJcbiAgcHJpdmF0ZSBfZGVmYXVsdEN1cmllPzogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2hvbWVSZXNvdXJjZT86IFJlc291cmNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2hhbENsaWVudDogSGFsQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBfb3B0aW9uczogUmVzdFdvcmxkT3B0aW9uc1xyXG4gICkgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaGFsQ2xpZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhbENsaWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbWJpbmVIZWFkZXJzKG9yaWdpbmFsSGVhZGVyczogSHR0cEhlYWRlcnMgfCB1bmRlZmluZWQsIGhlYWRlcnNUb0FkZDogSHR0cEhlYWRlcnMgfCB1bmRlZmluZWQsIG92ZXJ3cml0ZUV4aXN0aW5nOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWhlYWRlcnNUb0FkZClcclxuICAgICAgcmV0dXJuIG9yaWdpbmFsSGVhZGVycztcclxuICAgIGlmICghb3JpZ2luYWxIZWFkZXJzKVxyXG4gICAgICByZXR1cm4gaGVhZGVyc1RvQWRkO1xyXG5cclxuICAgIGxldCBjb21iaW5lZEhlYWRlcnMgPSBvcmlnaW5hbEhlYWRlcnM7XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaGVhZGVyc1RvQWRkLmtleXMpIHtcclxuICAgICAgaWYgKCFjb21iaW5lZEhlYWRlcnMuaGFzKGtleSkgfHwgb3ZlcndyaXRlRXhpc3RpbmcpIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJWYWx1ZXNUb0FkZCA9IGhlYWRlcnNUb0FkZC5nZXRBbGwoa2V5KTtcclxuICAgICAgICBpZiAoaGVhZGVyVmFsdWVzVG9BZGQpXHJcbiAgICAgICAgICBjb21iaW5lZEhlYWRlcnMgPSBjb21iaW5lZEhlYWRlcnMuc2V0KGtleSwgaGVhZGVyVmFsdWVzVG9BZGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbWJpbmVkSGVhZGVycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZUhlYWRlcnNXaXRob3V0Qm9keShcclxuICAgIHZlcnNpb24/OiBudW1iZXIsXHJcbiAgICBhY2NlcHQ/OiBzdHJpbmcpXHJcbiAgICA6IEh0dHBIZWFkZXJzIHtcclxuICAgIGlmICh2ZXJzaW9uKVxyXG4gICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQWNjZXB0JzogYCR7YWNjZXB0ID8/ICdhcHBsaWNhdGlvbi9oYWwranNvbid9OyB2PSR7dmVyc2lvbn1gLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBgdj0ke3ZlcnNpb259YFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdBY2NlcHQnOiBgJHthY2NlcHQgPz8gJ2FwcGxpY2F0aW9uL2hhbCtqc29uJ307YCxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVIZWFkZXJzV2l0aEJvZHkoXHJcbiAgICB2ZXJzaW9uPzogbnVtYmVyLFxyXG4gICAgYWNjZXB0Pzogc3RyaW5nLFxyXG4gICAgY29udGVudFR5cGU/OiBzdHJpbmcpXHJcbiAgICA6IEh0dHBIZWFkZXJzIHtcclxuICAgIGlmICh2ZXJzaW9uKVxyXG4gICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQWNjZXB0JzogYCR7YWNjZXB0ID8/ICdhcHBsaWNhdGlvbi9oYWwranNvbid9OyB2PSR7dmVyc2lvbn1gLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBgJHtjb250ZW50VHlwZSA/PyAnYXBwbGljYXRpb24vanNvbid9OyB2PSR7dmVyc2lvbn1gXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0FjY2VwdCc6IGAke2FjY2VwdCA/PyAnYXBwbGljYXRpb24vaGFsK2pzb24nfTtgLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBgJHtjb250ZW50VHlwZSA/PyAnYXBwbGljYXRpb24vanNvbid9O2BcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGVsZXRlKHJlc291cmNlOiBSZXNvdXJjZSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPHZvaWQgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGRlbGV0ZUxpbmsgPSByZXNvdXJjZS5maW5kTGluaygnZGVsZXRlJyk7XHJcbiAgICBpZiAoIWRlbGV0ZUxpbmspXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHJlc291cmNlICR7cmVzb3VyY2V9IGRvZXMgbm90IGhhdmUgYSBkZWxldGUgbGluay5gKTtcclxuICAgIGNvbnN0IHVyaSA9IGRlbGV0ZUxpbmsuaHJlZjtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzV2l0aG91dEJvZHkodGhpcy5fb3B0aW9ucy5WZXJzaW9uLCAnYXBwbGljYXRpb24vaGFsK2pzb24nKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmRlbGV0ZSh1cmksIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBlbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5faG9tZVJlc291cmNlKSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRIb21lRm9yY2VkKCk7XHJcbiAgICAgIGlmIChQcm9ibGVtRGV0YWlscy5pc1Byb2JsZW1EZXRhaWxzKHJlc3BvbnNlLmJvZHkpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IHRoZSBob21lIHJlc291cmNlIGZyb20gJHt0aGlzLl9vcHRpb25zLkJhc2VVcmx9IHdpdGggVmVyc2lvbiAke3RoaXMuX29wdGlvbnMuVmVyc2lvbn0uIFJlc3BvbnNlIHdhczogJHtyZXNwb25zZX1gKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXJlc3BvbnNlLmJvZHkpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IHRoZSBob21lIHJlc291cmNlIGZyb20gJHt0aGlzLl9vcHRpb25zLkJhc2VVcmx9IHdpdGggVmVyc2lvbiAke3RoaXMuX29wdGlvbnMuVmVyc2lvbn0uIFJlc3BvbnNlIHdhcyBlbXB0eS5gKTtcclxuICAgICAgdGhpcy5faG9tZVJlc291cmNlID0gcmVzcG9uc2UuYm9keTtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0Q3VyaWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtcyhyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxGb3Jtc1Jlc291cmNlIHwgUHJvYmxlbURldGFpbHM+W10+IHtcclxuICAgIGNvbnN0IHVybHMgPSByZXNvdXJjZS5nZXRGb3JtTGlua0hyZWZzKCk7XHJcbiAgICBjb25zdCBmb3Jtc1Byb21pc2VzID0gdXJscy5tYXAodXJsID0+IHRoaXMuZ2V0Rm9ybSh1cmwpKTtcclxuICAgIGNvbnN0IGZvcm1zQW5kUHJvYmxlbXMgPSBhd2FpdCBQcm9taXNlLmFsbChmb3Jtc1Byb21pc2VzKTtcclxuICAgIHJldHVybiBmb3Jtc0FuZFByb2JsZW1zO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEZvcm0odXJsOiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxGb3Jtc1Jlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVyc1dpdGhvdXRCb2R5KHRoaXMuX29wdGlvbnMuVmVyc2lvbiwgJ2FwcGxpY2F0aW9uL3Bycy5oYWwtZm9ybXMranNvbicpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhbENsaWVudC5nZXQodXJsLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBbGxMaW5rc0Zyb21Ib21lKCk6IHsgW3JlbDogc3RyaW5nXTogTGlua1tdIHwgdW5kZWZpbmVkOyB9IHtcclxuICAgIGlmICghdGhpcy5faG9tZVJlc291cmNlKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0hvbWUgcmVzb3VyY2UgaXMgbm90IHNldC4gQ2FsbCBlbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpIGZpcnN0LicpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9ob21lUmVzb3VyY2UuX2xpbmtzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3Q8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4ocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRBbGxQYWdlc0Zyb21MaXN0QnlVcmk8VExpc3REdG8+KHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3RCeVVyaTxUTGlzdER0byBleHRlbmRzIFJlc291cmNlRHRvPih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaTxUTGlzdER0bz4odXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHk/Ll9lbWJlZGRlZD8uaXRlbXMpXHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuXHJcbiAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmJvZHkuX2VtYmVkZGVkLml0ZW1zO1xyXG4gICAgbGV0IGxhc3RSZXNwb25zZSA9IHJlc3BvbnNlO1xyXG5cclxuICAgIHdoaWxlICgobGFzdFJlc3BvbnNlPy5ib2R5Py5fbGlua3M/Lm5leHQ/Lmxlbmd0aCA/PyAwKSA+IDApIHtcclxuICAgICAgLy8gR2V0IHRoZSBuZXh0IHJlc3BvbnNlXHJcbiAgICAgIGNvbnN0IG5leHRMaW5rcyA9IGxhc3RSZXNwb25zZS5ib2R5Py5fbGlua3MubmV4dDtcclxuICAgICAgY29uc3QgbmV4dExpbmsgPSBuZXh0TGlua3MgPyBuZXh0TGlua3NbMF0gOiB1bmRlZmluZWQ7XHJcbiAgICAgIGNvbnN0IG5leHRIcmVmID0gbmV4dExpbms/LmhyZWY7XHJcbiAgICAgIGlmIChuZXh0SHJlZikge1xyXG4gICAgICAgIGxhc3RSZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0TGlzdEJ5VXJpPFRMaXN0RHRvPihuZXh0SHJlZiwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgICAgIGlmICghbGFzdFJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMobGFzdFJlc3BvbnNlLmJvZHkpIHx8ICFsYXN0UmVzcG9uc2UuYm9keSlcclxuICAgICAgICAgIHJldHVybiBsYXN0UmVzcG9uc2U7XHJcblxyXG4gICAgICAgIC8vIENvbWJpbmUgdGhlIGVtYmVkZGVkIGl0ZW1zXHJcbiAgICAgICAgbGFzdFJlc3BvbnNlLmJvZHk/Ll9lbWJlZGRlZD8uaXRlbXM/LmZvckVhY2gociA9PiBpdGVtcy5wdXNoKHIpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFdlIGNvbWJpbmVkIGV2ZXJ5dGhpbmcsIHNvIHRoZXJlIGlzIGp1c3Qgb25lIGJpZyBwYWdlXHJcbiAgICByZXNwb25zZS5ib2R5LnRvdGFsUGFnZXMgPSAxO1xyXG4gICAgcmVzcG9uc2UuYm9keS5fbGlua3MubmV4dCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsVGVtcGxhdGVzKHJlc291cmNlOiBSZXNvdXJjZSk6IFByb21pc2U8VGVtcGxhdGVzPiB7XHJcbiAgICBjb25zdCBmb3JtUmVzcG9uc2VzID0gYXdhaXQgdGhpcy5nZXRBbGxGb3JtcyhyZXNvdXJjZSk7XHJcblxyXG4gICAgY29uc3QgZmFpbGVkUmVzcG9uc2VzID0gZm9ybVJlc3BvbnNlcy5maWx0ZXIocmVzcG9uc2UgPT4gIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHkpO1xyXG4gICAgaWYgKGZhaWxlZFJlc3BvbnNlcy5sZW5ndGggIT09IDApIHtcclxuICAgICAgZm9yIChjb25zdCByZXNwb25zZSBvZiBmYWlsZWRSZXNwb25zZXMpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdoaWxlIGxvYWRpbmcgdGhlIHJlc3BvbnNlIGZyb20gJHtyZXNwb25zZS51cmx9LCBTdGF0dXMgJHtyZXNwb25zZS5zdGF0dXN9IC0gJHtyZXNwb25zZS5zdGF0dXNUZXh0fSwgQ29udGVudDogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZS5ib2R5KX1gKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtVGVtcGxhdGVzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uZm9ybVJlc3BvbnNlcy5tYXAocmVzcG9uc2UgPT4gKHJlc3BvbnNlLmJvZHkgYXMgRm9ybXNSZXNvdXJjZSkuX3RlbXBsYXRlcykpIGFzIFRlbXBsYXRlcztcclxuXHJcbiAgICByZXR1cm4gZm9ybVRlbXBsYXRlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMaW5rRnJvbUhvbWUocmVsOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcsIGN1cmllPzogc3RyaW5nKTogTGluayB7XHJcbiAgICBjb25zdCBsaW5rcyA9IHRoaXMuZ2V0TGlua3NGcm9tSG9tZShyZWwsIGN1cmllKTtcclxuXHJcbiAgICBjb25zdCBsaW5rID0gbmFtZSA/IGxpbmtzLmZpbmQobCA9PiBsLm5hbWUgPT09IG5hbWUpIDogbGlua3NbMF07XHJcblxyXG4gICAgaWYgKCFsaW5rKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBob21lIHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBsaW5rIHdpdGggdGhlIHJlbCAnJHt0aGlzLmdldEZ1bGxSZWwocmVsLCBjdXJpZSl9JyBhbmQgdGhlIG5hbWUgJyR7bmFtZX0nLmApO1xyXG5cclxuICAgIHJldHVybiBsaW5rO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExpbmtzRnJvbUhvbWUocmVsOiBzdHJpbmcsIGN1cmllPzogc3RyaW5nKTogTGlua1tdIHtcclxuICAgIGlmICghdGhpcy5faG9tZVJlc291cmNlKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0hvbWUgcmVzb3VyY2UgaXMgbm90IHNldC4gQ2FsbCBlbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpIGZpcnN0LicpO1xyXG5cclxuICAgIGNvbnN0IGZ1bGxSZWwgPSB0aGlzLmdldEZ1bGxSZWwocmVsLCBjdXJpZSk7XHJcbiAgICBjb25zdCBsaW5rcyA9IHRoaXMuX2hvbWVSZXNvdXJjZS5fbGlua3NbZnVsbFJlbF07XHJcbiAgICBpZiAoIWxpbmtzIHx8IGxpbmtzLmxlbmd0aCA9PT0gMClcclxuICAgICAgdGhyb3cgRXJyb3IoYFRoZSBob21lIHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBsaW5rIHdpdGggdGhlIHJlbCAnJHtmdWxsUmVsfScuYCk7XHJcblxyXG4gICAgcmV0dXJuIGxpbmtzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldExpc3Q8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4ocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmXHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaTxUTGlzdER0bz4odXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlzdEFzQ3N2KHJlbDogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSwgaGVhZGVycz86IEh0dHBIZWFkZXJzLCBjdXJpZT86IHN0cmluZyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEJsb2I+IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRMaXN0QnlVcmlBc0Nzdih1cmksIHBhcmFtZXRlcnMsIGhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMaXN0QnlVcmk8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4odXJpOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxQYWdlZExpc3RSZXNvdXJjZTxUTGlzdER0bz4gfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGxpbmsgPSBuZXcgTGluaygpO1xyXG4gICAgbGluay5ocmVmID0gdXJpO1xyXG4gICAgY29uc3QgZmlsbGVkVXJpID0gbGluay5maWxsVGVtcGxhdGUocGFyYW1ldGVycyk7XHJcbiAgICBjb25zdCBkZWZhdWx0SGVhZGVycyA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzV2l0aG91dEJvZHkodGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IGNvbWJpbmVkSGVhZGVycyA9IFJlc3RXb3JsZENsaWVudC5jb21iaW5lSGVhZGVycyhoZWFkZXJzLCBkZWZhdWx0SGVhZGVycywgZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0PFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiwgUHJvYmxlbURldGFpbHM+KGZpbGxlZFVyaSwgUGFnZWRMaXN0UmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBjb21iaW5lZEhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRMaXN0QnlVcmlBc0Nzdih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEJsb2I+IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBsaW5rID0gbmV3IExpbmsoKTtcclxuICAgIGxpbmsuaHJlZiA9IHVyaTtcclxuICAgIGNvbnN0IGZpbGxlZFVyaSA9IGxpbmsuZmlsbFRlbXBsYXRlKHBhcmFtZXRlcnMpO1xyXG4gICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY3JlYXRlSGVhZGVyc1dpdGhvdXRCb2R5KHRoaXMuX29wdGlvbnMuVmVyc2lvbiwgJ3RleHQvY3N2Jyk7XHJcbiAgICBjb25zdCBjb21iaW5lZEhlYWRlcnMgPSBSZXN0V29ybGRDbGllbnQuY29tYmluZUhlYWRlcnMoaGVhZGVycywgZGVmYXVsdEhlYWRlcnMsIGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5oYWxDbGllbnQuaHR0cENsaWVudC5nZXQoZmlsbGVkVXJpLCB7IGhlYWRlcnM6IGNvbWJpbmVkSGVhZGVycywgcmVzcG9uc2VUeXBlOiAnYmxvYicsIG9ic2VydmU6ICdyZXNwb25zZScgfSkpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwb3N0TGlzdEJ5VXJpQXNDc3YodXJpOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBib2R5PzogYW55LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxCbG9iPiB8IHVuZGVmaW5lZD4ge1xyXG4gICAgY29uc3QgbGluayA9IG5ldyBMaW5rKCk7XHJcbiAgICBsaW5rLmhyZWYgPSB1cmk7XHJcbiAgICBjb25zdCBmaWxsZWRVcmkgPSBsaW5rLmZpbGxUZW1wbGF0ZShwYXJhbWV0ZXJzKTtcclxuICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnNXaXRoQm9keSh0aGlzLl9vcHRpb25zLlZlcnNpb24sICd0ZXh0L2NzdicpO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuaGFsQ2xpZW50Lmh0dHBDbGllbnQucG9zdChmaWxsZWRVcmksIGJvZHksIHsgaGVhZGVyczogY29tYmluZWRIZWFkZXJzLCByZXNwb25zZVR5cGU6ICdibG9iJywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyB9KSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNpbmdsZShyZWw6IHN0cmluZywgaWQ6IG51bWJlciwgaGVhZGVycz86IEh0dHBIZWFkZXJzLCBjdXJpZT86IHN0cmluZyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFJlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBpZiAoIV8uaXNOdW1iZXIoaWQpKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1doZW4gc3VwcGx5aW5nIGEgcmVsLCBhbiBJRCBtdXN0IGJlIHN1cHBsaWVkIHRvby4nKTtcclxuXHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0LCBjdXJpZSk7XHJcbiAgICBjb25zdCB1cmkgPSBsaW5rLmZpbGxUZW1wbGF0ZSh7IGlkOiBpZC50b1N0cmluZygpIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5nZXRTaW5nbGVCeVVyaSh1cmksIGhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRTaW5nbGVCeVVyaSh1cmk6IHN0cmluZywgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnNXaXRob3V0Qm9keSh0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUmVzdFdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldCh1cmksIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgY29tYmluZWRIZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2F2ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3Qgc2F2ZUxpbmsgPSByZXNvdXJjZS5maW5kTGluaygnc2F2ZScpO1xyXG4gICAgaWYgKCFzYXZlTGluaylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcmVzb3VyY2UgJHtyZXNvdXJjZX0gZG9lcyBub3QgaGF2ZSBhIHNhdmUgbGluay5gKTtcclxuICAgIGlmICghc2F2ZUxpbmsubmFtZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc2F2ZSBsaW5rICR7c2F2ZUxpbmt9IGRvZXMgbm90IGhhdmUgYSBzYXZlIG5hbWUuYCk7XHJcblxyXG4gICAgY29uc3QgdXJpID0gc2F2ZUxpbmsuaHJlZjtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHNhdmVMaW5rLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzV2l0aEJvZHkodGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuXHJcbiAgICBsZXQgcmVzcG9uc2U7XHJcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xyXG4gICAgICBjYXNlICdwdXQnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucHV0KHVyaSwgcmVzb3VyY2UsIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncG9zdCc6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5wb3N0KHVyaSwgcmVzb3VyY2UsIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke21ldGhvZH0nIGlzIG5vdCBhbGxvd2VkIGFzIGxpbmsgbmFtZSBmb3IgdGhlIHNhdmUgbGluay4gT25seSAnUE9TVCcgYW5kICdQVVQnIGFyZSBhbGxvd2VkLmApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzdWJtaXQodGVtcGxhdGU6IFRlbXBsYXRlLCBmb3JtVmFsdWVzOiB7fSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEZvcm1zUmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IHVyaSA9IHRlbXBsYXRlLnRhcmdldCB8fCAnJztcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRlbXBsYXRlLm1ldGhvZD8udG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzV2l0aEJvZHkodGhpcy5fb3B0aW9ucy5WZXJzaW9uLCAnYXBwbGljYXRpb24vcHJzLmhhbC1mb3Jtcytqc29uJyk7XHJcblxyXG4gICAgbGV0IHJlc3BvbnNlO1xyXG4gICAgc3dpdGNoIChtZXRob2QpIHtcclxuICAgICAgY2FzZSAncHV0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnB1dCh1cmksIGZvcm1WYWx1ZXMsIEZvcm1zUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwb3N0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnBvc3QodXJpLCBmb3JtVmFsdWVzLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldCh1cmksIEZvcm1zUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RnVsbFJlbChyZWw6IHN0cmluZywgY3VyaWU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gcmVsIGFscmVhZHkgaW5jbHVkZXMgYSBjdXJpZSA9PiBqdXN0IHJldHVybiBpdFxyXG4gICAgaWYgKHJlbC5pbmNsdWRlcygnOicpKVxyXG4gICAgICByZXR1cm4gcmVsO1xyXG5cclxuICAgIC8vIE5vIGN1cmllIGdpdmVuID0+IHVzZSBkZWZhdWx0IGN1cmllLlxyXG4gICAgaWYgKCFjdXJpZSlcclxuICAgICAgY3VyaWUgPSB0aGlzLl9kZWZhdWx0Q3VyaWU7XHJcblxyXG4gICAgLy8gQ29tYmluZSBjdXJpZSBhbmQgcmVsXHJcbiAgICBjb25zdCBmdWxsUmVsID0gYCR7Y3VyaWV9OiR7cmVsfWA7XHJcblxyXG4gICAgcmV0dXJuIGZ1bGxSZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldEhvbWVGb3JjZWQoKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJlc3RXb3JsZENsaWVudC5jcmVhdGVIZWFkZXJzV2l0aG91dEJvZHkodGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0KHRoaXMuX29wdGlvbnMuQmFzZVVybCwgUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0Q3VyaWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJpZXMgPSB0aGlzLl9ob21lUmVzb3VyY2U/Ll9saW5rcz8uY3VyaWVzO1xyXG4gICAgaWYgKCFjdXJpZXMgfHwgY3VyaWVzLmxlbmd0aCA9PT0gMCB8fCAhY3VyaWVzWzBdKVxyXG4gICAgICB0aGlzLl9kZWZhdWx0Q3VyaWUgPSB1bmRlZmluZWQ7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2RlZmF1bHRDdXJpZSA9IGN1cmllc1swXS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUJ5VGVtcGxhdGVBbmRGb3JtKHRlbXBsYXRlOiBUZW1wbGF0ZSwgZm9ybUdyb3VwOiBGb3JtR3JvdXA8eyB0aW1lc3RhbXA6IEFic3RyYWN0Q29udHJvbDxzdHJpbmc+IH0+KTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8dm9pZCB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgdXJsID0gdGVtcGxhdGUudGFyZ2V0O1xyXG4gICAgaWYgKHVybCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgdGFyZ2V0IG9mIHRoZSBnaXZlbiB0ZW1wbGF0ZSBjYW5ub3QgYmUgdW5kZWZpbmVkLlwiKTtcclxuXHJcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBmb3JtR3JvdXAudmFsdWUudGltZXN0YW1wXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlQnlVcmwodXJsLCB0aW1lc3RhbXApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUJ5VXJsKHVybDogc3RyaW5nLCB0aW1lc3RhbXA/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTx2b2lkIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBsZXQgaGVhZGVyID0gUmVzdFdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnNXaXRob3V0Qm9keSh0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGlmICh0aW1lc3RhbXAgIT09IHVuZGVmaW5lZClcclxuICAgICAgaGVhZGVyID0gaGVhZGVyLmFwcGVuZChcIkVUYWdcIiwgdGltZXN0YW1wKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmRlbGV0ZSh1cmwsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -16,7 +16,7 @@ import { ButtonModule } from 'primeng/button';
|
|
|
16
16
|
import * as _ from 'lodash';
|
|
17
17
|
import * as i1 from '@angular/platform-browser';
|
|
18
18
|
import * as i1$1 from '@wertzui/ngx-hal-client';
|
|
19
|
-
import { Resource, FormsResource, Link, PagedListResource, PropertyType, Property, NumberTemplate } from '@wertzui/ngx-hal-client';
|
|
19
|
+
import { Resource, FormsResource, Link, PagedListResource, PropertyType, Property, NumberTemplate, HalClientModule } from '@wertzui/ngx-hal-client';
|
|
20
20
|
import { HttpHeaders } from '@angular/common/http';
|
|
21
21
|
import { lastValueFrom } from 'rxjs';
|
|
22
22
|
import * as i2$3 from 'primeng/api';
|
|
@@ -315,13 +315,26 @@ class RestWorldClient {
|
|
|
315
315
|
}
|
|
316
316
|
return combinedHeaders;
|
|
317
317
|
}
|
|
318
|
-
static
|
|
318
|
+
static createHeadersWithoutBody(version, accept) {
|
|
319
319
|
if (version)
|
|
320
320
|
return new HttpHeaders({
|
|
321
|
-
'Accept': `${
|
|
322
|
-
'Content-Type':
|
|
321
|
+
'Accept': `${accept !== null && accept !== void 0 ? accept : 'application/hal+json'}; v=${version}`,
|
|
322
|
+
'Content-Type': `v=${version}`
|
|
323
323
|
});
|
|
324
|
-
return new HttpHeaders(
|
|
324
|
+
return new HttpHeaders({
|
|
325
|
+
'Accept': `${accept !== null && accept !== void 0 ? accept : 'application/hal+json'};`,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
static createHeadersWithBody(version, accept, contentType) {
|
|
329
|
+
if (version)
|
|
330
|
+
return new HttpHeaders({
|
|
331
|
+
'Accept': `${accept !== null && accept !== void 0 ? accept : 'application/hal+json'}; v=${version}`,
|
|
332
|
+
'Content-Type': `${contentType !== null && contentType !== void 0 ? contentType : 'application/json'}; v=${version}`
|
|
333
|
+
});
|
|
334
|
+
return new HttpHeaders({
|
|
335
|
+
'Accept': `${accept !== null && accept !== void 0 ? accept : 'application/hal+json'};`,
|
|
336
|
+
'Content-Type': `${contentType !== null && contentType !== void 0 ? contentType : 'application/json'};`
|
|
337
|
+
});
|
|
325
338
|
}
|
|
326
339
|
delete(resource) {
|
|
327
340
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -329,7 +342,7 @@ class RestWorldClient {
|
|
|
329
342
|
if (!deleteLink)
|
|
330
343
|
throw new Error(`The resource ${resource} does not have a delete link.`);
|
|
331
344
|
const uri = deleteLink.href;
|
|
332
|
-
const header = RestWorldClient.
|
|
345
|
+
const header = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'application/hal+json');
|
|
333
346
|
const response = yield this.halClient.delete(uri, ProblemDetails, header);
|
|
334
347
|
return response;
|
|
335
348
|
});
|
|
@@ -358,7 +371,7 @@ class RestWorldClient {
|
|
|
358
371
|
}
|
|
359
372
|
getForm(url) {
|
|
360
373
|
return __awaiter(this, void 0, void 0, function* () {
|
|
361
|
-
const header = RestWorldClient.
|
|
374
|
+
const header = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'application/prs.hal-forms+json');
|
|
362
375
|
return this._halClient.get(url, FormsResource, ProblemDetails, header);
|
|
363
376
|
});
|
|
364
377
|
}
|
|
@@ -453,7 +466,7 @@ class RestWorldClient {
|
|
|
453
466
|
const link = new Link();
|
|
454
467
|
link.href = uri;
|
|
455
468
|
const filledUri = link.fillTemplate(parameters);
|
|
456
|
-
const defaultHeaders = RestWorldClient.
|
|
469
|
+
const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version);
|
|
457
470
|
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
458
471
|
const response = yield this.halClient.get(filledUri, PagedListResource, ProblemDetails, combinedHeaders);
|
|
459
472
|
return response;
|
|
@@ -464,12 +477,23 @@ class RestWorldClient {
|
|
|
464
477
|
const link = new Link();
|
|
465
478
|
link.href = uri;
|
|
466
479
|
const filledUri = link.fillTemplate(parameters);
|
|
467
|
-
const defaultHeaders = RestWorldClient.
|
|
480
|
+
const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version, 'text/csv');
|
|
468
481
|
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
469
482
|
const response = yield lastValueFrom(this.halClient.httpClient.get(filledUri, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));
|
|
470
483
|
return response;
|
|
471
484
|
});
|
|
472
485
|
}
|
|
486
|
+
postListByUriAsCsv(uri, parameters, body, headers) {
|
|
487
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
488
|
+
const link = new Link();
|
|
489
|
+
link.href = uri;
|
|
490
|
+
const filledUri = link.fillTemplate(parameters);
|
|
491
|
+
const defaultHeaders = RestWorldClient.createHeadersWithBody(this._options.Version, 'text/csv');
|
|
492
|
+
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
493
|
+
const response = yield lastValueFrom(this.halClient.httpClient.post(filledUri, body, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));
|
|
494
|
+
return response;
|
|
495
|
+
});
|
|
496
|
+
}
|
|
473
497
|
getSingle(rel, id, headers, curie) {
|
|
474
498
|
return __awaiter(this, void 0, void 0, function* () {
|
|
475
499
|
if (!_.isNumber(id))
|
|
@@ -482,7 +506,7 @@ class RestWorldClient {
|
|
|
482
506
|
}
|
|
483
507
|
getSingleByUri(uri, headers) {
|
|
484
508
|
return __awaiter(this, void 0, void 0, function* () {
|
|
485
|
-
const defaultHeaders = RestWorldClient.
|
|
509
|
+
const defaultHeaders = RestWorldClient.createHeadersWithoutBody(this._options.Version);
|
|
486
510
|
const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);
|
|
487
511
|
const response = yield this.halClient.get(uri, Resource, ProblemDetails, combinedHeaders);
|
|
488
512
|
return response;
|
|
@@ -497,7 +521,7 @@ class RestWorldClient {
|
|
|
497
521
|
throw new Error(`The save link ${saveLink} does not have a save name.`);
|
|
498
522
|
const uri = saveLink.href;
|
|
499
523
|
const method = saveLink.name.toLowerCase();
|
|
500
|
-
const header = RestWorldClient.
|
|
524
|
+
const header = RestWorldClient.createHeadersWithBody(this._options.Version);
|
|
501
525
|
let response;
|
|
502
526
|
switch (method) {
|
|
503
527
|
case 'put':
|
|
@@ -517,7 +541,7 @@ class RestWorldClient {
|
|
|
517
541
|
return __awaiter(this, void 0, void 0, function* () {
|
|
518
542
|
const uri = template.target || '';
|
|
519
543
|
const method = (_a = template.method) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
520
|
-
const header = RestWorldClient.
|
|
544
|
+
const header = RestWorldClient.createHeadersWithBody(this._options.Version, 'application/prs.hal-forms+json');
|
|
521
545
|
let response;
|
|
522
546
|
switch (method) {
|
|
523
547
|
case 'put':
|
|
@@ -545,7 +569,7 @@ class RestWorldClient {
|
|
|
545
569
|
}
|
|
546
570
|
getHomeForced() {
|
|
547
571
|
return __awaiter(this, void 0, void 0, function* () {
|
|
548
|
-
const header = RestWorldClient.
|
|
572
|
+
const header = RestWorldClient.createHeadersWithoutBody(this._options.Version);
|
|
549
573
|
const response = yield this.halClient.get(this._options.BaseUrl, Resource, ProblemDetails, header);
|
|
550
574
|
return response;
|
|
551
575
|
});
|
|
@@ -569,7 +593,7 @@ class RestWorldClient {
|
|
|
569
593
|
}
|
|
570
594
|
deleteByUrl(url, timestamp) {
|
|
571
595
|
return __awaiter(this, void 0, void 0, function* () {
|
|
572
|
-
let header = RestWorldClient.
|
|
596
|
+
let header = RestWorldClient.createHeadersWithoutBody(this._options.Version);
|
|
573
597
|
if (timestamp !== undefined)
|
|
574
598
|
header = header.append("ETag", timestamp);
|
|
575
599
|
const response = yield this.halClient.delete(url, ProblemDetails, header);
|
|
@@ -2213,7 +2237,8 @@ RestworldClientModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
|
|
|
2213
2237
|
SplitButtonModule,
|
|
2214
2238
|
AvatarModule,
|
|
2215
2239
|
ContextMenuModule,
|
|
2216
|
-
ChipModule
|
|
2240
|
+
ChipModule,
|
|
2241
|
+
HalClientModule], exports: [RESTworldListViewComponent,
|
|
2217
2242
|
RESTworldEditViewComponent,
|
|
2218
2243
|
RestWorldImageComponent,
|
|
2219
2244
|
RestWorldFileComponent,
|
|
@@ -2278,7 +2303,8 @@ RestworldClientModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
|
|
|
2278
2303
|
SplitButtonModule,
|
|
2279
2304
|
AvatarModule,
|
|
2280
2305
|
ContextMenuModule,
|
|
2281
|
-
ChipModule
|
|
2306
|
+
ChipModule,
|
|
2307
|
+
HalClientModule] });
|
|
2282
2308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestworldClientModule, decorators: [{
|
|
2283
2309
|
type: NgModule,
|
|
2284
2310
|
args: [{
|
|
@@ -2340,6 +2366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
|
|
|
2340
2366
|
AvatarModule,
|
|
2341
2367
|
ContextMenuModule,
|
|
2342
2368
|
ChipModule,
|
|
2369
|
+
HalClientModule,
|
|
2343
2370
|
],
|
|
2344
2371
|
exports: [
|
|
2345
2372
|
RESTworldListViewComponent,
|
|
@@ -2389,4 +2416,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
|
|
|
2389
2416
|
|
|
2390
2417
|
export { AsPipe, AvatarGenerator, FormService, LinkNames, ODataService, ProblemDetails, PropertyWithImage, PropertyWithOptions, RESTworldEditViewComponent, RESTworldListViewComponent, RestWorldAvatarComponent, RestWorldClient, RestWorldClientCollection, RestWorldFileComponent, RestWorldFormComponent, RestWorldFormElementComponent, RestWorldIdNavigationComponent, RestWorldImageComponent, RestWorldInputCollectionComponent, RestWorldInputComponent, RestWorldInputDropdownComponent, RestWorldInputObjectComponent, RestWorldInputSimpleComponent, RestWorldInputTemplateComponent, RestWorldLabelComponent, RestWorldMenuButtonComponent, RestWorldOptions, RestWorldTableComponent, RestWorldValidationErrorsComponent, RestworldClientModule, SafeUrlPipe, SettingsService, initializeSettings };
|
|
2391
2418
|
//# sourceMappingURL=wertzui-ngx-restworld-client.mjs.map
|
|
2392
|
-
//# sourceMappingURL=wertzui-ngx-restworld-client.mjs.map
|