breeze-client 2.1.6 → 2.1.7-mjs
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/LICENSE +1 -1
- package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
- package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
- package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
- package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
- package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
- package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
- package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
- package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
- package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
- package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
- package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
- package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +135 -0
- package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +49 -0
- package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
- package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +135 -0
- package/esm2022/adapter-ajax-fetch/adapter-core.mjs +49 -0
- package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
- package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +139 -0
- package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +49 -0
- package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
- package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +107 -0
- package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
- package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
- package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
- package/esm2022/adapter-data-service-odata/adapter-core.mjs +49 -0
- package/{esm5/adapter-data-service-odata/adapter-data-service-odata.js → esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs} +138 -147
- package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
- package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +100 -0
- package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
- package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +269 -0
- package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
- package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +241 -0
- package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
- package/esm2022/adapter-uri-builder-json/adapter-core.mjs +49 -0
- package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +37 -0
- package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
- package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +49 -0
- package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +191 -0
- package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
- package/esm2022/breeze-client.mjs +5 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
- package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
- package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
- package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +421 -0
- package/esm2022/src/abstract-data-service-adapter.mjs +325 -0
- package/esm2022/src/array.mjs +4 -0
- package/esm2022/src/assert-param.mjs +330 -0
- package/esm2022/src/breeze.mjs +85 -0
- package/esm2022/src/complex-array.mjs +117 -0
- package/esm2022/src/config.mjs +232 -0
- package/esm2022/src/core.mjs +712 -0
- package/esm2022/src/csdl-metadata-parser.mjs +385 -0
- package/esm2022/src/data-service.mjs +239 -0
- package/esm2022/src/data-type.mjs +507 -0
- package/esm2022/src/default-property-interceptor.mjs +460 -0
- package/{esm2015/src/entity-action.js → esm2022/src/entity-action.mjs} +25 -25
- package/esm2022/src/entity-aspect.mjs +897 -0
- package/esm2022/src/entity-group.mjs +192 -0
- package/esm2022/src/entity-key.mjs +127 -0
- package/esm2022/src/entity-manager.mjs +2183 -0
- package/esm2022/src/entity-metadata.mjs +2242 -0
- package/esm2022/src/entity-query.mjs +1024 -0
- package/esm2022/src/entity-state.mjs +107 -0
- package/esm2022/src/enum.mjs +143 -0
- package/esm2022/src/event.mjs +264 -0
- package/esm2022/src/interface-registry.mjs +39 -0
- package/esm2022/src/key-generator.mjs +110 -0
- package/esm2022/src/local-query-comparison-options.mjs +75 -0
- package/esm2022/src/mapping-context.mjs +422 -0
- package/{esm5/src/naming-convention.js → esm2022/src/naming-convention.mjs} +35 -29
- package/esm2022/src/observable-array.mjs +183 -0
- package/esm2022/src/predicate.mjs +1259 -0
- package/esm2022/src/primitive-array.mjs +85 -0
- package/esm2022/src/query-options.mjs +160 -0
- package/esm2022/src/relation-array.mjs +173 -0
- package/esm2022/src/save-options.mjs +51 -0
- package/esm2022/src/unattached-children-map.mjs +56 -0
- package/{esm5/src/validate.js → esm2022/src/validate.mjs} +116 -110
- package/esm2022/src/validation-options.mjs +78 -0
- package/{fesm2015/breeze-client-adapter-ajax-angularjs.js → fesm2022/breeze-client-adapter-ajax-angularjs.mjs} +6 -1
- package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-ajax-fetch.js → fesm2022/breeze-client-adapter-ajax-fetch.mjs} +9 -4
- package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-ajax-httpclient.js → fesm2022/breeze-client-adapter-ajax-httpclient.mjs} +6 -4
- package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-ajax-jquery.js → fesm2022/breeze-client-adapter-ajax-jquery.mjs} +6 -2
- package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-ajax-post.js → fesm2022/breeze-client-adapter-ajax-post.mjs} +1 -1
- package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-data-service-odata.js → fesm2022/breeze-client-adapter-data-service-odata.mjs} +68 -69
- package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-data-service-webapi.js → fesm2022/breeze-client-adapter-data-service-webapi.mjs} +30 -30
- package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-model-library-backing-store.js → fesm2022/breeze-client-adapter-model-library-backing-store.mjs} +14 -13
- package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-model-library-ko.js → fesm2022/breeze-client-adapter-model-library-ko.mjs} +14 -13
- package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-uri-builder-json.js → fesm2022/breeze-client-adapter-uri-builder-json.mjs} +9 -8
- package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-uri-builder-odata.js → fesm2022/breeze-client-adapter-uri-builder-odata.mjs} +86 -86
- package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
- package/{fesm2015/breeze-client-mixin-get-entity-graph.js → fesm2022/breeze-client-mixin-get-entity-graph.mjs} +1 -1
- package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
- package/{fesm2015/breeze-client-mixin-save-queuing.js → fesm2022/breeze-client-mixin-save-queuing.mjs} +23 -2
- package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +1 -0
- package/{fesm2015/breeze-client.js → fesm2022/breeze-client.mjs} +2126 -1577
- package/fesm2022/breeze-client.mjs.map +1 -0
- package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
- package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
- package/package.json +93 -11
- package/src/abstract-data-service-adapter.d.ts +20 -0
- package/src/config.d.ts +1 -1
- package/src/core.d.ts +1 -1
- package/src/entity-aspect.d.ts +1 -1
- package/src/entity-metadata.d.ts +8 -6
- package/src/entity-query.d.ts +18 -4
- package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
- package/adapter-ajax-angularjs/package.json +0 -13
- package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
- package/adapter-ajax-fetch/package.json +0 -13
- package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
- package/adapter-ajax-httpclient/package.json +0 -13
- package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
- package/adapter-ajax-jquery/package.json +0 -13
- package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
- package/adapter-ajax-post/package.json +0 -13
- package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
- package/adapter-data-service-odata/package.json +0 -13
- package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
- package/adapter-data-service-webapi/package.json +0 -13
- package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
- package/adapter-model-library-backing-store/package.json +0 -13
- package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
- package/adapter-model-library-ko/package.json +0 -13
- package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
- package/adapter-uri-builder-json/package.json +0 -13
- package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
- package/adapter-uri-builder-odata/package.json +0 -13
- package/breeze-client.d.ts +0 -8
- package/breeze-client.metadata.json +0 -1
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
- package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
- package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
- package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -747
- package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
- package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -333
- package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
- package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
- package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
- package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
- package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
- package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
- package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
- package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
- package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
- package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
- package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
- package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
- package/bundles/breeze-client.umd.js +0 -14181
- package/bundles/breeze-client.umd.js.map +0 -1
- package/bundles/breeze-client.umd.min.js +0 -16
- package/bundles/breeze-client.umd.min.js.map +0 -1
- package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
- package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
- package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
- package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
- package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
- package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
- package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
- package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
- package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
- package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
- package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
- package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
- package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
- package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
- package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -463
- package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
- package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -100
- package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
- package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
- package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
- package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
- package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
- package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
- package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
- package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
- package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
- package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
- package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
- package/esm2015/breeze-client.js +0 -9
- package/esm2015/index.js +0 -2
- package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
- package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
- package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
- package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
- package/esm2015/src/abstract-data-service-adapter.js +0 -296
- package/esm2015/src/array.js +0 -4
- package/esm2015/src/assert-param.js +0 -312
- package/esm2015/src/breeze.js +0 -85
- package/esm2015/src/complex-array.js +0 -119
- package/esm2015/src/config.js +0 -223
- package/esm2015/src/core.js +0 -714
- package/esm2015/src/csdl-metadata-parser.js +0 -385
- package/esm2015/src/data-service.js +0 -203
- package/esm2015/src/data-type.js +0 -503
- package/esm2015/src/default-property-interceptor.js +0 -460
- package/esm2015/src/entity-aspect.js +0 -804
- package/esm2015/src/entity-group.js +0 -187
- package/esm2015/src/entity-key.js +0 -116
- package/esm2015/src/entity-manager.js +0 -2094
- package/esm2015/src/entity-metadata.js +0 -2109
- package/esm2015/src/entity-query.js +0 -996
- package/esm2015/src/entity-state.js +0 -107
- package/esm2015/src/enum.js +0 -141
- package/esm2015/src/event.js +0 -256
- package/esm2015/src/interface-registry.js +0 -41
- package/esm2015/src/key-generator.js +0 -108
- package/esm2015/src/local-query-comparison-options.js +0 -65
- package/esm2015/src/mapping-context.js +0 -411
- package/esm2015/src/naming-convention.js +0 -88
- package/esm2015/src/observable-array.js +0 -185
- package/esm2015/src/predicate.js +0 -1242
- package/esm2015/src/primitive-array.js +0 -87
- package/esm2015/src/query-options.js +0 -152
- package/esm2015/src/relation-array.js +0 -175
- package/esm2015/src/save-options.js +0 -41
- package/esm2015/src/unattached-children-map.js +0 -58
- package/esm2015/src/validate.js +0 -991
- package/esm2015/src/validation-options.js +0 -64
- package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
- package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
- package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
- package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
- package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
- package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
- package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
- package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
- package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
- package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
- package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
- package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
- package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
- package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
- package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
- package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -105
- package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
- package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
- package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
- package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
- package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
- package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
- package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
- package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
- package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
- package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
- package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
- package/esm5/breeze-client.js +0 -9
- package/esm5/index.js +0 -2
- package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
- package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
- package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
- package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
- package/esm5/src/abstract-data-service-adapter.js +0 -302
- package/esm5/src/array.js +0 -4
- package/esm5/src/assert-param.js +0 -317
- package/esm5/src/breeze.js +0 -85
- package/esm5/src/complex-array.js +0 -119
- package/esm5/src/config.js +0 -228
- package/esm5/src/core.js +0 -722
- package/esm5/src/csdl-metadata-parser.js +0 -385
- package/esm5/src/data-service.js +0 -207
- package/esm5/src/data-type.js +0 -510
- package/esm5/src/default-property-interceptor.js +0 -460
- package/esm5/src/entity-action.js +0 -52
- package/esm5/src/entity-aspect.js +0 -810
- package/esm5/src/entity-group.js +0 -189
- package/esm5/src/entity-key.js +0 -118
- package/esm5/src/entity-manager.js +0 -2112
- package/esm5/src/entity-metadata.js +0 -2144
- package/esm5/src/entity-query.js +0 -1023
- package/esm5/src/entity-state.js +0 -114
- package/esm5/src/enum.js +0 -144
- package/esm5/src/event.js +0 -259
- package/esm5/src/interface-registry.js +0 -43
- package/esm5/src/key-generator.js +0 -111
- package/esm5/src/local-query-comparison-options.js +0 -67
- package/esm5/src/mapping-context.js +0 -413
- package/esm5/src/observable-array.js +0 -201
- package/esm5/src/predicate.js +0 -1307
- package/esm5/src/primitive-array.js +0 -87
- package/esm5/src/query-options.js +0 -167
- package/esm5/src/relation-array.js +0 -175
- package/esm5/src/save-options.js +0 -43
- package/esm5/src/unattached-children-map.js +0 -60
- package/esm5/src/validation-options.js +0 -66
- package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
- package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
- package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
- package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
- package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
- package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
- package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
- package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
- package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
- package/fesm2015/breeze-client.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-angularjs.js +0 -186
- package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-fetch.js +0 -186
- package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-httpclient.js +0 -193
- package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-jquery.js +0 -111
- package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-post.js +0 -86
- package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
- package/fesm5/breeze-client-adapter-data-service-odata.js +0 -523
- package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
- package/fesm5/breeze-client-adapter-data-service-webapi.js +0 -111
- package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
- package/fesm5/breeze-client-adapter-model-library-backing-store.js +0 -276
- package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
- package/fesm5/breeze-client-adapter-model-library-ko.js +0 -248
- package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
- package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
- package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
- package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
- package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
- package/fesm5/breeze-client-mixin-get-entity-graph.js +0 -254
- package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
- package/fesm5/breeze-client-mixin-save-queuing.js +0 -356
- package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
- package/fesm5/breeze-client.js +0 -13903
- package/fesm5/breeze-client.js.map +0 -1
- package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
- package/mixin-get-entity-graph/package.json +0 -13
- package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
- package/mixin-save-queuing/package.json +0 -13
package/esm5/src/assert-param.js
DELETED
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
/** @hidden @internal */
|
|
3
|
-
var Param = /** @class */ (function () {
|
|
4
|
-
function Param(v, name) {
|
|
5
|
-
/** @hidden @internal */
|
|
6
|
-
this._applyOne = function (instance) {
|
|
7
|
-
if (this.v !== undefined) {
|
|
8
|
-
instance[this.name] = this.v;
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
if (this.defaultValue !== undefined) {
|
|
12
|
-
instance[this.name] = this.defaultValue;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
this.MESSAGE_PREFIX = "The '%1' parameter ";
|
|
17
|
-
this.v = v;
|
|
18
|
-
this.name = name;
|
|
19
|
-
this._contexts = [null];
|
|
20
|
-
}
|
|
21
|
-
Param.prototype.isObject = function () {
|
|
22
|
-
return this.isTypeOf('object');
|
|
23
|
-
};
|
|
24
|
-
Param.prototype.isBoolean = function () {
|
|
25
|
-
return this.isTypeOf('boolean');
|
|
26
|
-
};
|
|
27
|
-
Param.prototype.isString = function () {
|
|
28
|
-
return this.isTypeOf('string');
|
|
29
|
-
};
|
|
30
|
-
Param.prototype.isNumber = function () {
|
|
31
|
-
return this.isTypeOf('number');
|
|
32
|
-
};
|
|
33
|
-
Param.prototype.isFunction = function () {
|
|
34
|
-
return this.isTypeOf('function');
|
|
35
|
-
};
|
|
36
|
-
Param.prototype.isNonEmptyString = function () {
|
|
37
|
-
return addContext(this, {
|
|
38
|
-
fn: isNonEmptyString,
|
|
39
|
-
msg: "must be a nonEmpty string"
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
Param.prototype.isTypeOf = function (typeName) {
|
|
43
|
-
return addContext(this, {
|
|
44
|
-
fn: isTypeOf,
|
|
45
|
-
typeName: typeName,
|
|
46
|
-
msg: "must be a '" + typeName + "'"
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
Param.prototype.isInstanceOf = function (type, typeName) {
|
|
50
|
-
typeName = typeName || type.prototype._$typeName;
|
|
51
|
-
return addContext(this, {
|
|
52
|
-
fn: isInstanceOf,
|
|
53
|
-
type: type,
|
|
54
|
-
typeName: typeName,
|
|
55
|
-
msg: "must be an instance of '" + typeName + "'"
|
|
56
|
-
});
|
|
57
|
-
};
|
|
58
|
-
Param.prototype.hasProperty = function (propertyName) {
|
|
59
|
-
return addContext(this, {
|
|
60
|
-
fn: hasProperty,
|
|
61
|
-
propertyName: propertyName,
|
|
62
|
-
msg: "must have a '" + propertyName + "' property"
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
Param.prototype.isEnumOf = function (enumType) {
|
|
66
|
-
return addContext(this, {
|
|
67
|
-
fn: isEnumOf,
|
|
68
|
-
enumType: enumType,
|
|
69
|
-
msg: "must be an instance of the '" + (enumType.name || 'unknown') + "' enumeration"
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
Param.prototype.isRequired = function (allowNull) {
|
|
73
|
-
if (allowNull === void 0) { allowNull = false; }
|
|
74
|
-
return addContext(this, {
|
|
75
|
-
fn: isRequired,
|
|
76
|
-
allowNull: allowNull,
|
|
77
|
-
msg: "is required"
|
|
78
|
-
});
|
|
79
|
-
};
|
|
80
|
-
Param.prototype.isOptional = function () {
|
|
81
|
-
var context = {
|
|
82
|
-
fn: isOptional,
|
|
83
|
-
prevContext: null,
|
|
84
|
-
msg: isOptionalMessage
|
|
85
|
-
};
|
|
86
|
-
return addContext(this, context);
|
|
87
|
-
};
|
|
88
|
-
Param.prototype.isNonEmptyArray = function () {
|
|
89
|
-
return this.isArray(true);
|
|
90
|
-
};
|
|
91
|
-
Param.prototype.isArray = function (mustNotBeEmpty) {
|
|
92
|
-
var context = {
|
|
93
|
-
fn: isArray,
|
|
94
|
-
mustNotBeEmpty: mustNotBeEmpty,
|
|
95
|
-
prevContext: null,
|
|
96
|
-
msg: isArrayMessage
|
|
97
|
-
};
|
|
98
|
-
return addContext(this, context);
|
|
99
|
-
};
|
|
100
|
-
Param.prototype.or = function () {
|
|
101
|
-
this._contexts.push(null);
|
|
102
|
-
this._context = null;
|
|
103
|
-
return this;
|
|
104
|
-
};
|
|
105
|
-
Param.prototype.check = function (defaultValue) {
|
|
106
|
-
var ok = exec(this);
|
|
107
|
-
if (ok === undefined)
|
|
108
|
-
return;
|
|
109
|
-
if (!ok) {
|
|
110
|
-
throw new Error(this.getMessage());
|
|
111
|
-
}
|
|
112
|
-
if (this.v !== undefined) {
|
|
113
|
-
return this.v;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
return defaultValue;
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
/** @hidden @internal */
|
|
120
|
-
// called from outside this file.
|
|
121
|
-
Param.prototype._addContext = function (context) {
|
|
122
|
-
return addContext(this, context);
|
|
123
|
-
};
|
|
124
|
-
Param.prototype.getMessage = function () {
|
|
125
|
-
var that = this;
|
|
126
|
-
var message = this._contexts.map(function (context) {
|
|
127
|
-
return getMessage(context, that.v);
|
|
128
|
-
}).join(", or it ");
|
|
129
|
-
return core.formatString(this.MESSAGE_PREFIX, this.name) + " " + message;
|
|
130
|
-
};
|
|
131
|
-
Param.prototype.withDefault = function (defaultValue) {
|
|
132
|
-
this.defaultValue = defaultValue;
|
|
133
|
-
return this;
|
|
134
|
-
};
|
|
135
|
-
Param.prototype.whereParam = function (propName) {
|
|
136
|
-
return this.parent.whereParam(propName);
|
|
137
|
-
};
|
|
138
|
-
Param.prototype.applyAll = function (instance, checkOnly) {
|
|
139
|
-
if (checkOnly === void 0) { checkOnly = false; }
|
|
140
|
-
var parentTypeName = instance._$typeName;
|
|
141
|
-
var allowUnknownProperty = (parentTypeName && this.parent.config._$typeName === parentTypeName);
|
|
142
|
-
var clone = core.extend({}, this.parent.config);
|
|
143
|
-
this.parent.params.forEach(function (p) {
|
|
144
|
-
if (!allowUnknownProperty)
|
|
145
|
-
delete clone[p.name];
|
|
146
|
-
try {
|
|
147
|
-
p.check();
|
|
148
|
-
}
|
|
149
|
-
catch (e) {
|
|
150
|
-
throwConfigError(instance, e.message);
|
|
151
|
-
}
|
|
152
|
-
(!checkOnly) && p._applyOne(instance);
|
|
153
|
-
});
|
|
154
|
-
// should be no properties left in the clone
|
|
155
|
-
if (!allowUnknownProperty) {
|
|
156
|
-
for (var key in clone) {
|
|
157
|
-
// allow props with an undefined value
|
|
158
|
-
if (clone[key] !== undefined) {
|
|
159
|
-
throwConfigError(instance, core.formatString("Unknown property: '%1'.", key));
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
return Param;
|
|
165
|
-
}());
|
|
166
|
-
export { Param };
|
|
167
|
-
/** @hidden @internal */
|
|
168
|
-
export var assertParam = function (v, name) {
|
|
169
|
-
return new Param(v, name);
|
|
170
|
-
};
|
|
171
|
-
function isTypeOf(context, v) {
|
|
172
|
-
if (v == null)
|
|
173
|
-
return false;
|
|
174
|
-
if (typeof (v) === context.typeName)
|
|
175
|
-
return true;
|
|
176
|
-
return false;
|
|
177
|
-
}
|
|
178
|
-
function isNonEmptyString(context, v) {
|
|
179
|
-
if (v == null)
|
|
180
|
-
return false;
|
|
181
|
-
return (typeof (v) === 'string') && v.length > 0;
|
|
182
|
-
}
|
|
183
|
-
function isInstanceOf(context, v) {
|
|
184
|
-
if (v == null || context.type == null)
|
|
185
|
-
return false;
|
|
186
|
-
return (v instanceof context.type);
|
|
187
|
-
}
|
|
188
|
-
function isEnumOf(context, v) {
|
|
189
|
-
if (v == null || context.enumType == null)
|
|
190
|
-
return false;
|
|
191
|
-
return context.enumType.contains(v);
|
|
192
|
-
}
|
|
193
|
-
function hasProperty(context, v) {
|
|
194
|
-
if (v == null || context.propertyName == null)
|
|
195
|
-
return false;
|
|
196
|
-
return (v[context.propertyName] !== undefined);
|
|
197
|
-
}
|
|
198
|
-
function isRequired(context, v) {
|
|
199
|
-
if (context.allowNull) {
|
|
200
|
-
return v !== undefined;
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
return v != null;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
function isOptional(context, v) {
|
|
207
|
-
if (v == null)
|
|
208
|
-
return true;
|
|
209
|
-
var prevContext = context.prevContext;
|
|
210
|
-
if (prevContext && prevContext.fn) {
|
|
211
|
-
return prevContext.fn(prevContext, v);
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
return true;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
function isOptionalMessage(context, v) {
|
|
218
|
-
var prevContext = context.prevContext;
|
|
219
|
-
var element = prevContext ? " or it " + getMessage(prevContext, v) : "";
|
|
220
|
-
return "is optional" + element;
|
|
221
|
-
}
|
|
222
|
-
function isArray(context, v) {
|
|
223
|
-
if (!Array.isArray(v)) {
|
|
224
|
-
return false;
|
|
225
|
-
}
|
|
226
|
-
if (context.mustNotBeEmpty) {
|
|
227
|
-
if (v.length === 0)
|
|
228
|
-
return false;
|
|
229
|
-
}
|
|
230
|
-
// allow standalone is array call.
|
|
231
|
-
var prevContext = context.prevContext;
|
|
232
|
-
if (!prevContext)
|
|
233
|
-
return true;
|
|
234
|
-
var pc = prevContext;
|
|
235
|
-
return v.every(function (v1) {
|
|
236
|
-
return pc.fn && pc.fn(pc, v1);
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
function isArrayMessage(context, v) {
|
|
240
|
-
var arrayDescr = context.mustNotBeEmpty ? "a nonEmpty array" : "an array";
|
|
241
|
-
var prevContext = context.prevContext;
|
|
242
|
-
var element = prevContext ? " where each element " + getMessage(prevContext, v) : "";
|
|
243
|
-
return " must be " + arrayDescr + element;
|
|
244
|
-
}
|
|
245
|
-
function getMessage(context, v) {
|
|
246
|
-
var msg = context.msg;
|
|
247
|
-
if (typeof (msg) === "function") {
|
|
248
|
-
msg = msg(context, v);
|
|
249
|
-
}
|
|
250
|
-
return msg;
|
|
251
|
-
}
|
|
252
|
-
function addContext(that, context) {
|
|
253
|
-
if (that._context) {
|
|
254
|
-
var curContext = that._context;
|
|
255
|
-
while (curContext.prevContext != null) {
|
|
256
|
-
curContext = curContext.prevContext;
|
|
257
|
-
}
|
|
258
|
-
if (curContext.prevContext === null) {
|
|
259
|
-
curContext.prevContext = context;
|
|
260
|
-
// just update the prevContext but don't change the curContext.
|
|
261
|
-
return that;
|
|
262
|
-
}
|
|
263
|
-
else if (context.prevContext == null) {
|
|
264
|
-
context.prevContext = that._context;
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
throw new Error("Illegal construction - use 'or' to combine checks");
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
return setContext(that, context);
|
|
271
|
-
}
|
|
272
|
-
function setContext(that, context) {
|
|
273
|
-
that._contexts[that._contexts.length - 1] = context;
|
|
274
|
-
that._context = context;
|
|
275
|
-
return that;
|
|
276
|
-
}
|
|
277
|
-
function exec(self) {
|
|
278
|
-
// clear off last one if null
|
|
279
|
-
var contexts = self._contexts;
|
|
280
|
-
if (contexts[contexts.length - 1] == null) {
|
|
281
|
-
contexts.pop();
|
|
282
|
-
}
|
|
283
|
-
if (contexts.length === 0) {
|
|
284
|
-
return undefined;
|
|
285
|
-
}
|
|
286
|
-
return contexts.some(function (context) {
|
|
287
|
-
return context.fn ? context.fn(context, self.v) : false;
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
function throwConfigError(instance, message) {
|
|
291
|
-
throw new Error(core.formatString("Error configuring an instance of '%1'. %2", (instance && instance._$typeName) || "object", message));
|
|
292
|
-
}
|
|
293
|
-
var ConfigParam = /** @class */ (function () {
|
|
294
|
-
function ConfigParam(config) {
|
|
295
|
-
if (typeof (config) !== "object") {
|
|
296
|
-
throw new Error("Configuration parameter should be an object, instead it is a: " + typeof (config));
|
|
297
|
-
}
|
|
298
|
-
this.config = config;
|
|
299
|
-
this.params = [];
|
|
300
|
-
}
|
|
301
|
-
ConfigParam.prototype.whereParam = function (propName) {
|
|
302
|
-
var param = new Param(this.config[propName], propName);
|
|
303
|
-
param.parent = this;
|
|
304
|
-
this.params.push(param);
|
|
305
|
-
return param;
|
|
306
|
-
};
|
|
307
|
-
return ConfigParam;
|
|
308
|
-
}());
|
|
309
|
-
/** @hidden @internal */
|
|
310
|
-
export var assertConfig = function (config) {
|
|
311
|
-
return new ConfigParam(config);
|
|
312
|
-
};
|
|
313
|
-
// Param is exposed so that additional 'is' methods can be added to the prototype.
|
|
314
|
-
core.Param = Param;
|
|
315
|
-
core.assertParam = assertParam;
|
|
316
|
-
core.assertConfig = assertConfig;
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LXBhcmFtLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9hc3NlcnQtcGFyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLElBQUksRUFBRyxNQUFNLFFBQVEsQ0FBQztBQXNCL0Isd0JBQXdCO0FBQ3hCO0lBbUJJLGVBQVksQ0FBTSxFQUFFLElBQVk7UUEwS2hDLHdCQUF3QjtRQUN4QixjQUFTLEdBQUcsVUFBdUIsUUFBYTtZQUM1QyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0gsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtvQkFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2lCQUMzQzthQUNKO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsbUJBQWMsR0FBRyxxQkFBcUIsQ0FBQztRQXBMbkMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELHdCQUFRLEdBQVI7UUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHlCQUFTLEdBQVQ7UUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELHdCQUFRLEdBQVI7UUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHdCQUFRLEdBQVI7UUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELDBCQUFVLEdBQVY7UUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGdDQUFnQixHQUFoQjtRQUNJLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRTtZQUNwQixFQUFFLEVBQUUsZ0JBQWdCO1lBQ3BCLEdBQUcsRUFBRSwyQkFBMkI7U0FDbkMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdELHdCQUFRLEdBQVIsVUFBUyxRQUFnQjtRQUNyQixPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDcEIsRUFBRSxFQUFFLFFBQVE7WUFDWixRQUFRLEVBQUUsUUFBUTtZQUNsQixHQUFHLEVBQUUsYUFBYSxHQUFHLFFBQVEsR0FBRyxHQUFHO1NBQ3RDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCw0QkFBWSxHQUFaLFVBQWEsSUFBYyxFQUFFLFFBQWlCO1FBQzFDLFFBQVEsR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDakQsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQ3BCLEVBQUUsRUFBRSxZQUFZO1lBQ2hCLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7WUFDbEIsR0FBRyxFQUFFLDBCQUEwQixHQUFHLFFBQVEsR0FBRyxHQUFHO1NBQ25ELENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCwyQkFBVyxHQUFYLFVBQVksWUFBb0I7UUFDNUIsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQ3BCLEVBQUUsRUFBRSxXQUFXO1lBQ2YsWUFBWSxFQUFFLFlBQVk7WUFDMUIsR0FBRyxFQUFFLGVBQWUsR0FBRyxZQUFZLEdBQUcsWUFBWTtTQUNyRCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBR0Qsd0JBQVEsR0FBUixVQUFTLFFBQWE7UUFDbEIsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQ3BCLEVBQUUsRUFBRSxRQUFRO1lBQ1osUUFBUSxFQUFFLFFBQVE7WUFDbEIsR0FBRyxFQUFFLDhCQUE4QixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsR0FBRyxlQUFlO1NBQ3ZGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCwwQkFBVSxHQUFWLFVBQVcsU0FBMEI7UUFBMUIsMEJBQUEsRUFBQSxpQkFBMEI7UUFDakMsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQ3BCLEVBQUUsRUFBRSxVQUFVO1lBQ2QsU0FBUyxFQUFFLFNBQVM7WUFDcEIsR0FBRyxFQUFFLGFBQWE7U0FDckIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDBCQUFVLEdBQVY7UUFDSSxJQUFJLE9BQU8sR0FBRztZQUNWLEVBQUUsRUFBRSxVQUFVO1lBQ2QsV0FBVyxFQUFPLElBQUk7WUFDdEIsR0FBRyxFQUFFLGlCQUFpQjtTQUN6QixDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCwrQkFBZSxHQUFmO1FBQ0ksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCx1QkFBTyxHQUFQLFVBQVEsY0FBd0I7UUFDNUIsSUFBSSxPQUFPLEdBQUc7WUFDVixFQUFFLEVBQUUsT0FBTztZQUNYLGNBQWMsRUFBRSxjQUFjO1lBQzlCLFdBQVcsRUFBTyxJQUFJO1lBQ3RCLEdBQUcsRUFBRSxjQUFjO1NBQ3RCLENBQUM7UUFDRixPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGtCQUFFLEdBQUY7UUFDSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFRLElBQUksQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQscUJBQUssR0FBTCxVQUFNLFlBQWtCO1FBQ3BCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLEVBQUUsS0FBSyxTQUFTO1lBQUUsT0FBTztRQUM3QixJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUN0QztRQUVELElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2pCO2FBQU07WUFDSCxPQUFPLFlBQVksQ0FBQztTQUN2QjtJQUNMLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsaUNBQWlDO0lBQ2pDLDJCQUFXLEdBQVgsVUFBWSxPQUFzQjtRQUM5QixPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELDBCQUFVLEdBQVY7UUFDSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxPQUFPO1lBQzlDLE9BQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0lBQzdFLENBQUM7SUFFRCwyQkFBVyxHQUFYLFVBQVksWUFBaUI7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELDBCQUFVLEdBQVYsVUFBVyxRQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCx3QkFBUSxHQUFSLFVBQVMsUUFBYSxFQUFFLFNBQTBCO1FBQTFCLDBCQUFBLEVBQUEsaUJBQTBCO1FBQzlDLElBQUksY0FBYyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDekMsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssY0FBYyxDQUFDLENBQUM7UUFFaEcsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxvQkFBb0I7Z0JBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELElBQUk7Z0JBQ0EsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2I7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3pDO1lBQ0QsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3ZCLEtBQUssSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFO2dCQUNuQixzQ0FBc0M7Z0JBQ3RDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRTtvQkFDMUIsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDakY7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQWVMLFlBQUM7QUFBRCxDQUFDLEFBMU1ELElBME1DOztBQUVELHdCQUF3QjtBQUN4QixNQUFNLENBQUMsSUFBSSxXQUFXLEdBQUcsVUFBVSxDQUFNLEVBQUUsSUFBWTtJQUNuRCxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFRixTQUFTLFFBQVEsQ0FBQyxPQUFzQixFQUFFLENBQU07SUFDNUMsSUFBSSxDQUFDLElBQUksSUFBSTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzVCLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxRQUFRO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDakQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsT0FBc0IsRUFBRSxDQUFNO0lBQ3BELElBQUksQ0FBQyxJQUFJLElBQUk7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM1QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxPQUFzQixFQUFFLENBQU07SUFDaEQsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3BELE9BQU8sQ0FBQyxDQUFDLFlBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxPQUFzQixFQUFFLENBQU07SUFDNUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSTtRQUFHLE9BQU8sS0FBSyxDQUFDO0lBQ3pELE9BQVEsT0FBTyxDQUFDLFFBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxPQUFzQixFQUFFLENBQU07SUFDL0MsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzVELE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxPQUFzQixFQUFFLENBQU07SUFDOUMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1FBQ25CLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQztLQUMxQjtTQUFNO1FBQ0gsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDO0tBQ3BCO0FBQ0wsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLE9BQXNCLEVBQUUsQ0FBTTtJQUM5QyxJQUFJLENBQUMsSUFBSSxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0IsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUN0QyxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFO1FBQy9CLE9BQU8sV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDekM7U0FBTTtRQUNILE9BQU8sSUFBSSxDQUFDO0tBQ2Y7QUFDTCxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxPQUFzQixFQUFFLENBQU07SUFDckQsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUN0QyxJQUFJLE9BQU8sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEUsT0FBTyxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxPQUFzQixFQUFFLENBQU07SUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDbkIsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUU7UUFDeEIsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztLQUNwQztJQUNELGtDQUFrQztJQUNsQyxJQUFJLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFOUIsSUFBSSxFQUFFLEdBQVEsV0FBVyxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQU87UUFDNUIsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE9BQXNCLEVBQUUsQ0FBTTtJQUNsRCxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQzFFLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDdEMsSUFBSSxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckYsT0FBTyxXQUFXLEdBQUcsVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUM5QyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsT0FBc0IsRUFBRSxDQUFNO0lBQzlDLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDdEIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxFQUFFO1FBQzdCLEdBQUcsR0FBUyxHQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ2hDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBVyxFQUFFLE9BQXNCO0lBQ25ELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNmLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFL0IsT0FBTyxVQUFVLENBQUMsV0FBVyxJQUFJLElBQUksRUFBRTtZQUNuQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztTQUN2QztRQUVELElBQUksVUFBVSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7WUFDakMsVUFBVSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7WUFDakMsK0RBQStEO1lBQy9ELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFO1lBQ3BDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN2QzthQUFNO1lBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1NBQ3hFO0tBQ0o7SUFDRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQVcsRUFBRSxPQUFzQjtJQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUN4QixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBR0QsU0FBUyxJQUFJLENBQUMsSUFBVztJQUNyQiw2QkFBNkI7SUFDN0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM5QixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtRQUN2QyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDbEI7SUFDRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sU0FBUyxDQUFDO0tBQ3BCO0lBQ0QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBc0I7UUFDakQsT0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM1RCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFFBQWEsRUFBRSxPQUFlO0lBQ3BELE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQywyQ0FBMkMsRUFBRSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDNUksQ0FBQztBQUVEO0lBR0kscUJBQVksTUFBYztRQUN0QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN2RztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQ0FBVSxHQUFWLFVBQVcsUUFBZ0I7UUFDdkIsSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0wsa0JBQUM7QUFBRCxDQUFDLEFBakJELElBaUJDO0FBRUQsd0JBQXdCO0FBQ3hCLE1BQU0sQ0FBQyxJQUFJLFlBQVksR0FBRyxVQUFVLE1BQWM7SUFDOUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQWlCLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBR0Ysa0ZBQWtGO0FBQ2pGLElBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLElBQVksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0FBQ3ZDLElBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlZXplRW51bSB9IGZyb20gJy4vZW51bSc7XHJcbmltcG9ydCB7IGNvcmUgIH0gZnJvbSAnLi9jb3JlJztcclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElQYXJhbUNvbnRleHQge1xyXG4gICAgdHlwZU5hbWU/OiBzdHJpbmc7XHJcbiAgICB0eXBlPzogRnVuY3Rpb247XHJcbiAgICBwcmV2Q29udGV4dD86IElQYXJhbUNvbnRleHQ7XHJcbiAgICBtc2c/OiBzdHJpbmcgfCAoKGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkgPT4gc3RyaW5nKTtcclxuICAgIG11c3ROb3RCZUVtcHR5PzogYm9vbGVhbjtcclxuICAgIGVudW1UeXBlPzogQnJlZXplRW51bTtcclxuICAgIHByb3BlcnR5TmFtZT86IHN0cmluZztcclxuICAgIGFsbG93TnVsbD86IGJvb2xlYW47XHJcbiAgICBmbj8oY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KTogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZ1BhcmFtIHtcclxuICAgIGNvbmZpZzogYW55O1xyXG4gICAgcGFyYW1zOiBQYXJhbVtdO1xyXG4gICAgd2hlcmVQYXJhbTogKHByb3BOYW1lOiBzdHJpbmcpID0+IFBhcmFtO1xyXG59XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGNsYXNzIFBhcmFtIHtcclxuICAgIC8vIFRoZSAlMSBwYXJhbWV0ZXJcclxuICAgIC8vIGlzIHJlcXVpcmVkXHJcbiAgICAvLyBtdXN0IGJlIGEgJTJcclxuICAgIC8vIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgJTJcclxuICAgIC8vIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdGhlICUyIGVudW1lcmF0aW9uXHJcbiAgICAvLyBtdXN0IGhhdmUgYSAlMiBwcm9wZXJ0eVxyXG4gICAgLy8gbXVzdCBiZSBhbiBhcnJheSB3aGVyZSBlYWNoIGVsZW1lbnRcclxuICAgIC8vIGlzIG9wdGlvbmFsIG9yXHJcblxyXG4gICAgdjogYW55O1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgZGVmYXVsdFZhbHVlOiBhbnk7XHJcbiAgICBwYXJlbnQ6IElDb25maWdQYXJhbTtcclxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gICAgX2NvbnRleHQ6IElQYXJhbUNvbnRleHQ7XHJcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICAgIF9jb250ZXh0czogSVBhcmFtQ29udGV4dFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHY6IGFueSwgbmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy52ID0gdjtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHRzID0gWzxhbnk+bnVsbF07XHJcbiAgICB9XHJcblxyXG4gICAgaXNPYmplY3QoKTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzVHlwZU9mKCdvYmplY3QnKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0Jvb2xlYW4oKTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzVHlwZU9mKCdib29sZWFuJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTdHJpbmcoKTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzVHlwZU9mKCdzdHJpbmcnKTtcclxuICAgIH1cclxuXHJcbiAgICBpc051bWJlcigpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNUeXBlT2YoJ251bWJlcicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRnVuY3Rpb24oKTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzVHlwZU9mKCdmdW5jdGlvbicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTm9uRW1wdHlTdHJpbmcoKTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiBhZGRDb250ZXh0KHRoaXMsIHtcclxuICAgICAgICAgICAgZm46IGlzTm9uRW1wdHlTdHJpbmcsXHJcbiAgICAgICAgICAgIG1zZzogXCJtdXN0IGJlIGEgbm9uRW1wdHkgc3RyaW5nXCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaXNUeXBlT2YodHlwZU5hbWU6IHN0cmluZyk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gYWRkQ29udGV4dCh0aGlzLCB7XHJcbiAgICAgICAgICAgIGZuOiBpc1R5cGVPZixcclxuICAgICAgICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lLFxyXG4gICAgICAgICAgICBtc2c6IFwibXVzdCBiZSBhICdcIiArIHR5cGVOYW1lICsgXCInXCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaXNJbnN0YW5jZU9mKHR5cGU6IEZ1bmN0aW9uLCB0eXBlTmFtZT86IHN0cmluZyk6IFBhcmFtIHtcclxuICAgICAgICB0eXBlTmFtZSA9IHR5cGVOYW1lIHx8IHR5cGUucHJvdG90eXBlLl8kdHlwZU5hbWU7XHJcbiAgICAgICAgcmV0dXJuIGFkZENvbnRleHQodGhpcywge1xyXG4gICAgICAgICAgICBmbjogaXNJbnN0YW5jZU9mLFxyXG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICAgICAgICB0eXBlTmFtZTogdHlwZU5hbWUsXHJcbiAgICAgICAgICAgIG1zZzogXCJtdXN0IGJlIGFuIGluc3RhbmNlIG9mICdcIiArIHR5cGVOYW1lICsgXCInXCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaGFzUHJvcGVydHkocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIGFkZENvbnRleHQodGhpcywge1xyXG4gICAgICAgICAgICBmbjogaGFzUHJvcGVydHksXHJcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxyXG4gICAgICAgICAgICBtc2c6IFwibXVzdCBoYXZlIGEgJ1wiICsgcHJvcGVydHlOYW1lICsgXCInIHByb3BlcnR5XCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaXNFbnVtT2YoZW51bVR5cGU6IGFueSk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gYWRkQ29udGV4dCh0aGlzLCB7XHJcbiAgICAgICAgICAgIGZuOiBpc0VudW1PZixcclxuICAgICAgICAgICAgZW51bVR5cGU6IGVudW1UeXBlLFxyXG4gICAgICAgICAgICBtc2c6IFwibXVzdCBiZSBhbiBpbnN0YW5jZSBvZiB0aGUgJ1wiICsgKGVudW1UeXBlLm5hbWUgfHwgJ3Vua25vd24nKSArIFwiJyBlbnVtZXJhdGlvblwiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNSZXF1aXJlZChhbGxvd051bGw6IGJvb2xlYW4gPSBmYWxzZSk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gYWRkQ29udGV4dCh0aGlzLCB7XHJcbiAgICAgICAgICAgIGZuOiBpc1JlcXVpcmVkLFxyXG4gICAgICAgICAgICBhbGxvd051bGw6IGFsbG93TnVsbCxcclxuICAgICAgICAgICAgbXNnOiBcImlzIHJlcXVpcmVkXCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpc09wdGlvbmFsKCk6IFBhcmFtIHtcclxuICAgICAgICBsZXQgY29udGV4dCA9IHtcclxuICAgICAgICAgICAgZm46IGlzT3B0aW9uYWwsXHJcbiAgICAgICAgICAgIHByZXZDb250ZXh0OiA8YW55Pm51bGwsXHJcbiAgICAgICAgICAgIG1zZzogaXNPcHRpb25hbE1lc3NhZ2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBhZGRDb250ZXh0KHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTm9uRW1wdHlBcnJheSgpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNBcnJheSh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0FycmF5KG11c3ROb3RCZUVtcHR5PzogYm9vbGVhbik6IFBhcmFtIHtcclxuICAgICAgICBsZXQgY29udGV4dCA9IHtcclxuICAgICAgICAgICAgZm46IGlzQXJyYXksXHJcbiAgICAgICAgICAgIG11c3ROb3RCZUVtcHR5OiBtdXN0Tm90QmVFbXB0eSxcclxuICAgICAgICAgICAgcHJldkNvbnRleHQ6IDxhbnk+bnVsbCxcclxuICAgICAgICAgICAgbXNnOiBpc0FycmF5TWVzc2FnZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGFkZENvbnRleHQodGhpcywgY29udGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3IoKSB7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dHMucHVzaCg8YW55Pm51bGwpO1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHQgPSA8YW55Pm51bGw7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2soZGVmYXVsdFZhbHVlPzogYW55KSB7XHJcbiAgICAgICAgbGV0IG9rID0gZXhlYyh0aGlzKTtcclxuICAgICAgICBpZiAob2sgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIGlmICghb2spIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0TWVzc2FnZSgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnYgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gICAgLy8gY2FsbGVkIGZyb20gb3V0c2lkZSB0aGlzIGZpbGUuXHJcbiAgICBfYWRkQ29udGV4dChjb250ZXh0OiBJUGFyYW1Db250ZXh0KSB7XHJcbiAgICAgICAgcmV0dXJuIGFkZENvbnRleHQodGhpcywgY29udGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TWVzc2FnZSgpIHtcclxuICAgICAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLl9jb250ZXh0cy5tYXAoZnVuY3Rpb24gKGNvbnRleHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldE1lc3NhZ2UoY29udGV4dCwgdGhhdC52KTtcclxuICAgICAgICB9KS5qb2luKFwiLCBvciBpdCBcIik7XHJcbiAgICAgICAgcmV0dXJuIGNvcmUuZm9ybWF0U3RyaW5nKHRoaXMuTUVTU0FHRV9QUkVGSVgsIHRoaXMubmFtZSkgKyBcIiBcIiArIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgd2l0aERlZmF1bHQoZGVmYXVsdFZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICB3aGVyZVBhcmFtKHByb3BOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQud2hlcmVQYXJhbShwcm9wTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlBbGwoaW5zdGFuY2U6IGFueSwgY2hlY2tPbmx5OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgcGFyZW50VHlwZU5hbWUgPSBpbnN0YW5jZS5fJHR5cGVOYW1lO1xyXG4gICAgICAgIGxldCBhbGxvd1Vua25vd25Qcm9wZXJ0eSA9IChwYXJlbnRUeXBlTmFtZSAmJiB0aGlzLnBhcmVudC5jb25maWcuXyR0eXBlTmFtZSA9PT0gcGFyZW50VHlwZU5hbWUpO1xyXG5cclxuICAgICAgICBsZXQgY2xvbmUgPSBjb3JlLmV4dGVuZCh7fSwgdGhpcy5wYXJlbnQuY29uZmlnKTtcclxuICAgICAgICB0aGlzLnBhcmVudC5wYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAocCkge1xyXG4gICAgICAgICAgICBpZiAoIWFsbG93VW5rbm93blByb3BlcnR5KSBkZWxldGUgY2xvbmVbcC5uYW1lXTtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHAuY2hlY2soKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3dDb25maWdFcnJvcihpbnN0YW5jZSwgZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAoIWNoZWNrT25seSkgJiYgcC5fYXBwbHlPbmUoaW5zdGFuY2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIHNob3VsZCBiZSBubyBwcm9wZXJ0aWVzIGxlZnQgaW4gdGhlIGNsb25lXHJcbiAgICAgICAgaWYgKCFhbGxvd1Vua25vd25Qcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gY2xvbmUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGFsbG93IHByb3BzIHdpdGggYW4gdW5kZWZpbmVkIHZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZiAoY2xvbmVba2V5XSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dDb25maWdFcnJvcihpbnN0YW5jZSwgY29yZS5mb3JtYXRTdHJpbmcoXCJVbmtub3duIHByb3BlcnR5OiAnJTEnLlwiLCBrZXkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICAgIF9hcHBseU9uZSA9IGZ1bmN0aW9uICh0aGlzOiBQYXJhbSwgaW5zdGFuY2U6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnYgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZVt0aGlzLm5hbWVdID0gdGhpcy52O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZVt0aGlzLm5hbWVdID0gdGhpcy5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIE1FU1NBR0VfUFJFRklYID0gXCJUaGUgJyUxJyBwYXJhbWV0ZXIgXCI7XHJcblxyXG59XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGxldCBhc3NlcnRQYXJhbSA9IGZ1bmN0aW9uICh2OiBhbnksIG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBQYXJhbSh2LCBuYW1lKTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGlzVHlwZU9mKGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgaWYgKHYgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHR5cGVvZiAodikgPT09IGNvbnRleHQudHlwZU5hbWUpIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc05vbkVtcHR5U3RyaW5nKGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgaWYgKHYgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuICh0eXBlb2YgKHYpID09PSAnc3RyaW5nJykgJiYgdi5sZW5ndGggPiAwO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0luc3RhbmNlT2YoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBpZiAodiA9PSBudWxsIHx8IGNvbnRleHQudHlwZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gKHYgaW5zdGFuY2VvZiBjb250ZXh0LnR5cGUpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0VudW1PZihjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGlmICh2ID09IG51bGwgfHwgY29udGV4dC5lbnVtVHlwZSA9PSBudWxsICkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIChjb250ZXh0LmVudW1UeXBlIGFzIGFueSkuY29udGFpbnModik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhc1Byb3BlcnR5KGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgaWYgKHYgPT0gbnVsbCB8fCBjb250ZXh0LnByb3BlcnR5TmFtZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gKHZbY29udGV4dC5wcm9wZXJ0eU5hbWVdICE9PSB1bmRlZmluZWQpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1JlcXVpcmVkKGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgaWYgKGNvbnRleHQuYWxsb3dOdWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHYgIT0gbnVsbDtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaXNPcHRpb25hbChjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGlmICh2ID09IG51bGwpIHJldHVybiB0cnVlO1xyXG4gICAgbGV0IHByZXZDb250ZXh0ID0gY29udGV4dC5wcmV2Q29udGV4dDtcclxuICAgIGlmIChwcmV2Q29udGV4dCAmJiBwcmV2Q29udGV4dC5mbikge1xyXG4gICAgICAgIHJldHVybiBwcmV2Q29udGV4dC5mbihwcmV2Q29udGV4dCwgdik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc09wdGlvbmFsTWVzc2FnZShjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGxldCBwcmV2Q29udGV4dCA9IGNvbnRleHQucHJldkNvbnRleHQ7XHJcbiAgICBsZXQgZWxlbWVudCA9IHByZXZDb250ZXh0ID8gXCIgb3IgaXQgXCIgKyBnZXRNZXNzYWdlKHByZXZDb250ZXh0LCB2KSA6IFwiXCI7XHJcbiAgICByZXR1cm4gXCJpcyBvcHRpb25hbFwiICsgZWxlbWVudDtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNBcnJheShjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2KSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChjb250ZXh0Lm11c3ROb3RCZUVtcHR5KSB7XHJcbiAgICAgICAgaWYgKHYubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBhbGxvdyBzdGFuZGFsb25lIGlzIGFycmF5IGNhbGwuXHJcbiAgICBsZXQgcHJldkNvbnRleHQgPSBjb250ZXh0LnByZXZDb250ZXh0O1xyXG4gICAgaWYgKCFwcmV2Q29udGV4dCkgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgbGV0IHBjID0gPGFueT5wcmV2Q29udGV4dDtcclxuICAgIHJldHVybiB2LmV2ZXJ5KGZ1bmN0aW9uICh2MTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHBjLmZuICYmIHBjLmZuKHBjLCB2MSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNBcnJheU1lc3NhZ2UoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBsZXQgYXJyYXlEZXNjciA9IGNvbnRleHQubXVzdE5vdEJlRW1wdHkgPyBcImEgbm9uRW1wdHkgYXJyYXlcIiA6IFwiYW4gYXJyYXlcIjtcclxuICAgIGxldCBwcmV2Q29udGV4dCA9IGNvbnRleHQucHJldkNvbnRleHQ7XHJcbiAgICBsZXQgZWxlbWVudCA9IHByZXZDb250ZXh0ID8gXCIgd2hlcmUgZWFjaCBlbGVtZW50IFwiICsgZ2V0TWVzc2FnZShwcmV2Q29udGV4dCwgdikgOiBcIlwiO1xyXG4gICAgcmV0dXJuIFwiIG11c3QgYmUgXCIgKyBhcnJheURlc2NyICsgZWxlbWVudDtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TWVzc2FnZShjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGxldCBtc2cgPSBjb250ZXh0Lm1zZztcclxuICAgIGlmICh0eXBlb2YgKG1zZykgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIG1zZyA9ICg8YW55Pm1zZykoY29udGV4dCwgdik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbXNnO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhZGRDb250ZXh0KHRoYXQ6IFBhcmFtLCBjb250ZXh0OiBJUGFyYW1Db250ZXh0KSB7XHJcbiAgICBpZiAodGhhdC5fY29udGV4dCkge1xyXG4gICAgICAgIGxldCBjdXJDb250ZXh0ID0gdGhhdC5fY29udGV4dDtcclxuXHJcbiAgICAgICAgd2hpbGUgKGN1ckNvbnRleHQucHJldkNvbnRleHQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjdXJDb250ZXh0ID0gY3VyQ29udGV4dC5wcmV2Q29udGV4dDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjdXJDb250ZXh0LnByZXZDb250ZXh0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGN1ckNvbnRleHQucHJldkNvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgICAgICAgICAvLyBqdXN0IHVwZGF0ZSB0aGUgcHJldkNvbnRleHQgYnV0IGRvbid0IGNoYW5nZSB0aGUgY3VyQ29udGV4dC5cclxuICAgICAgICAgICAgcmV0dXJuIHRoYXQ7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LnByZXZDb250ZXh0ID09IG51bGwpIHtcclxuICAgICAgICAgICAgY29udGV4dC5wcmV2Q29udGV4dCA9IHRoYXQuX2NvbnRleHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBjb25zdHJ1Y3Rpb24gLSB1c2UgJ29yJyB0byBjb21iaW5lIGNoZWNrc1wiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc2V0Q29udGV4dCh0aGF0LCBjb250ZXh0KTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0Q29udGV4dCh0aGF0OiBQYXJhbSwgY29udGV4dDogSVBhcmFtQ29udGV4dCkge1xyXG4gICAgdGhhdC5fY29udGV4dHNbdGhhdC5fY29udGV4dHMubGVuZ3RoIC0gMV0gPSBjb250ZXh0O1xyXG4gICAgdGhhdC5fY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICByZXR1cm4gdGhhdDtcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGV4ZWMoc2VsZjogUGFyYW0pIHtcclxuICAgIC8vIGNsZWFyIG9mZiBsYXN0IG9uZSBpZiBudWxsXHJcbiAgICBsZXQgY29udGV4dHMgPSBzZWxmLl9jb250ZXh0cztcclxuICAgIGlmIChjb250ZXh0c1tjb250ZXh0cy5sZW5ndGggLSAxXSA9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dHMucG9wKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY29udGV4dHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250ZXh0cy5zb21lKGZ1bmN0aW9uIChjb250ZXh0OiBJUGFyYW1Db250ZXh0KSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRleHQuZm4gPyBjb250ZXh0LmZuKGNvbnRleHQsIHNlbGYudikgOiBmYWxzZTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0aHJvd0NvbmZpZ0Vycm9yKGluc3RhbmNlOiBhbnksIG1lc3NhZ2U6IHN0cmluZykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGNvcmUuZm9ybWF0U3RyaW5nKFwiRXJyb3IgY29uZmlndXJpbmcgYW4gaW5zdGFuY2Ugb2YgJyUxJy4gJTJcIiwgKGluc3RhbmNlICYmIGluc3RhbmNlLl8kdHlwZU5hbWUpIHx8IFwib2JqZWN0XCIsIG1lc3NhZ2UpKTtcclxufVxyXG5cclxuY2xhc3MgQ29uZmlnUGFyYW0ge1xyXG4gICAgY29uZmlnOiBhbnk7XHJcbiAgICBwYXJhbXM6IFBhcmFtW107XHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWc6IE9iamVjdCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgKGNvbmZpZykgIT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgc2hvdWxkIGJlIGFuIG9iamVjdCwgaW5zdGVhZCBpdCBpcyBhOiBcIiArIHR5cGVvZiAoY29uZmlnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xyXG4gICAgICAgIHRoaXMucGFyYW1zID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgd2hlcmVQYXJhbShwcm9wTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IHBhcmFtID0gbmV3IFBhcmFtKHRoaXMuY29uZmlnW3Byb3BOYW1lXSwgcHJvcE5hbWUpO1xyXG4gICAgICAgIHBhcmFtLnBhcmVudCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5wYXJhbXMucHVzaChwYXJhbSk7XHJcbiAgICAgICAgcmV0dXJuIHBhcmFtO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGxldCBhc3NlcnRDb25maWcgPSBmdW5jdGlvbiAoY29uZmlnOiBPYmplY3QpIHtcclxuICAgIHJldHVybiBuZXcgQ29uZmlnUGFyYW0oY29uZmlnKSBhcyBJQ29uZmlnUGFyYW07XHJcbn07XHJcblxyXG5cclxuLy8gUGFyYW0gaXMgZXhwb3NlZCBzbyB0aGF0IGFkZGl0aW9uYWwgJ2lzJyBtZXRob2RzIGNhbiBiZSBhZGRlZCB0byB0aGUgcHJvdG90eXBlLlxyXG4oY29yZSBhcyBhbnkpLlBhcmFtID0gUGFyYW07XHJcbihjb3JlIGFzIGFueSkuYXNzZXJ0UGFyYW0gPSBhc3NlcnRQYXJhbTtcclxuKGNvcmUgYXMgYW55KS5hc3NlcnRDb25maWcgPSBhc3NlcnRDb25maWc7XHJcbiJdfQ==
|
package/esm5/src/breeze.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { AbstractDataServiceAdapter } from './abstract-data-service-adapter';
|
|
2
|
-
import { assertParam, assertConfig, Param } from './assert-param';
|
|
3
|
-
import { BreezeConfig } from './config';
|
|
4
|
-
import { BreezeEnum } from './enum';
|
|
5
|
-
import { BreezeEvent } from './event';
|
|
6
|
-
import { DataService, JsonResultsAdapter } from './data-service';
|
|
7
|
-
import { DataType } from './data-type';
|
|
8
|
-
import { EntityAction } from './entity-action';
|
|
9
|
-
import { EntityAspect, ComplexAspect } from './entity-aspect';
|
|
10
|
-
import { EntityKey } from './entity-key';
|
|
11
|
-
import { EntityManager } from './entity-manager';
|
|
12
|
-
import { EntityQuery, FilterQueryOp, BooleanQueryOp, OrderByClause, ExpandClause, SelectClause } from './entity-query';
|
|
13
|
-
import { EntityState } from './entity-state';
|
|
14
|
-
import { InterfaceRegistry } from './interface-registry';
|
|
15
|
-
import { KeyGenerator } from './key-generator';
|
|
16
|
-
import { LocalQueryComparisonOptions } from './local-query-comparison-options';
|
|
17
|
-
import { MappingContext } from './mapping-context';
|
|
18
|
-
import { MetadataStore, EntityType, ComplexType, DataProperty, NavigationProperty, AutoGeneratedKeyType } from './entity-metadata';
|
|
19
|
-
import { NamingConvention } from './naming-convention';
|
|
20
|
-
import { Predicate, UnaryPredicate, BinaryPredicate, AnyAllPredicate, AndOrPredicate, LitExpr, FnExpr, PropExpr } from './predicate';
|
|
21
|
-
import { QueryOptions, FetchStrategy, MergeStrategy } from './query-options';
|
|
22
|
-
import { SaveOptions } from './save-options';
|
|
23
|
-
import { ValidationError, Validator } from './validate';
|
|
24
|
-
import { ValidationOptions } from './validation-options';
|
|
25
|
-
import { config } from './config';
|
|
26
|
-
import { core } from './core';
|
|
27
|
-
import { makeRelationArray, makePrimitiveArray, makeComplexArray } from './array';
|
|
28
|
-
export { BreezeConfig };
|
|
29
|
-
export { AbstractDataServiceAdapter, AndOrPredicate, AnyAllPredicate, assertConfig, assertParam, AutoGeneratedKeyType, BinaryPredicate, BreezeEnum, BreezeEvent, ComplexAspect, ComplexType, config, core, DataProperty, DataService, DataType, EntityAction, EntityAspect, EntityKey, EntityManager, EntityQuery, EntityState, EntityType, ExpandClause, FetchStrategy, FilterQueryOp, FnExpr, InterfaceRegistry, JsonResultsAdapter, KeyGenerator, LitExpr, LocalQueryComparisonOptions, makeComplexArray, makePrimitiveArray, makeRelationArray, MappingContext, MergeStrategy, MetadataStore, NamingConvention, NavigationProperty, OrderByClause, Predicate, PropExpr, QueryOptions, SaveOptions, SelectClause, UnaryPredicate, ValidationError, ValidationOptions, Validator, };
|
|
30
|
-
// create a breeze variable here
|
|
31
|
-
export var breeze = {
|
|
32
|
-
AbstractDataServiceAdapter: AbstractDataServiceAdapter,
|
|
33
|
-
assertConfig: null,
|
|
34
|
-
assertParam: null,
|
|
35
|
-
AutoGeneratedKeyType: AutoGeneratedKeyType,
|
|
36
|
-
BooleanQueryOp: BooleanQueryOp,
|
|
37
|
-
ComplexAspect: ComplexAspect,
|
|
38
|
-
ComplexType: ComplexType,
|
|
39
|
-
config: config,
|
|
40
|
-
core: core,
|
|
41
|
-
DataProperty: DataProperty,
|
|
42
|
-
DataService: DataService,
|
|
43
|
-
DataType: DataType,
|
|
44
|
-
EntityAction: EntityAction,
|
|
45
|
-
EntityAspect: EntityAspect,
|
|
46
|
-
EntityKey: EntityKey,
|
|
47
|
-
EntityManager: EntityManager,
|
|
48
|
-
EntityQuery: EntityQuery,
|
|
49
|
-
EntityState: EntityState,
|
|
50
|
-
EntityType: EntityType,
|
|
51
|
-
Event: BreezeEvent,
|
|
52
|
-
FetchStrategy: FetchStrategy,
|
|
53
|
-
FilterQueryOp: FilterQueryOp,
|
|
54
|
-
InterfaceRegistry: InterfaceRegistry,
|
|
55
|
-
JsonResultsAdapter: JsonResultsAdapter,
|
|
56
|
-
KeyGenerator: KeyGenerator,
|
|
57
|
-
LocalQueryComparisonOptions: LocalQueryComparisonOptions,
|
|
58
|
-
makeComplexArray: makeComplexArray,
|
|
59
|
-
makePrimitiveArray: makePrimitiveArray,
|
|
60
|
-
makeRelationArray: makeRelationArray,
|
|
61
|
-
MergeStrategy: MergeStrategy,
|
|
62
|
-
MetadataStore: MetadataStore,
|
|
63
|
-
NamingConvention: NamingConvention,
|
|
64
|
-
NavigationProperty: NavigationProperty,
|
|
65
|
-
OrderByClause: OrderByClause,
|
|
66
|
-
Param: Param,
|
|
67
|
-
Predicate: Predicate,
|
|
68
|
-
QueryOptions: QueryOptions,
|
|
69
|
-
SaveOptions: SaveOptions,
|
|
70
|
-
ValidationError: ValidationError,
|
|
71
|
-
ValidationOptions: ValidationOptions,
|
|
72
|
-
Validator: Validator,
|
|
73
|
-
version: "2.1.5"
|
|
74
|
-
};
|
|
75
|
-
/** @hidden @internal */
|
|
76
|
-
var win;
|
|
77
|
-
try {
|
|
78
|
-
win = window ? window : (global ? global.window : undefined);
|
|
79
|
-
}
|
|
80
|
-
catch (e) {
|
|
81
|
-
}
|
|
82
|
-
if (win) {
|
|
83
|
-
win.breeze = breeze;
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9icmVlemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDBCQUEwQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEMsT0FBTyxFQUFFLFdBQVcsRUFBcUIsa0JBQWtCLEVBQW1ELE1BQU0sZ0JBQWdCLENBQUM7QUFDckksT0FBTyxFQUFFLFFBQVEsRUFBRyxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQXFFLE1BQU0saUJBQWlCLENBQUM7QUFDakksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFtTixNQUFNLGtCQUFrQixDQUFDO0FBQ2xRLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQWtLLE1BQU0sc0JBQXNCLENBQUM7QUFDek4sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWtCLFlBQVksRUFBa0Isa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUNySyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUE0QyxjQUFjLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0ssT0FBTyxFQUFFLFlBQVksRUFBRyxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxNQUFNLEVBQWUsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFFLElBQUksRUFBMkIsTUFBTSxRQUFRLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSWxGLE9BQU8sRUFBRSxZQUFZLEVBQStCLENBQUM7QUFFckQsT0FBTyxFQUNMLDBCQUEwQixFQUkxQixjQUFjLEVBQ2QsZUFBZSxFQUVmLFlBQVksRUFDWixXQUFXLEVBQ1gsb0JBQW9CLEVBRXBCLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUdYLGFBQWEsRUFFYixXQUFXLEVBQ1gsTUFBTSxFQUNOLElBQUksRUFDSixZQUFZLEVBQ1osV0FBVyxFQUdYLFFBQVEsRUFFUixZQUFZLEVBQ1osWUFBWSxFQUdaLFNBQVMsRUFDVCxhQUFhLEVBR2IsV0FBVyxFQUNYLFdBQVcsRUFDWCxVQUFVLEVBRVYsWUFBWSxFQUVaLGFBQWEsRUFDYixhQUFhLEVBQ2IsTUFBTSxFQUdOLGlCQUFpQixFQUVqQixrQkFBa0IsRUFFbEIsWUFBWSxFQUVaLE9BQU8sRUFDUCwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEVBRWIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUdsQixhQUFhLEVBQ2IsU0FBUyxFQUVULFFBQVEsRUFDUixZQUFZLEVBSVosV0FBVyxFQUVYLFlBQVksRUFJWixjQUFjLEVBR2QsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixTQUFTLEdBR1YsQ0FBQztBQUVGLGdDQUFnQztBQUNoQyxNQUFNLENBQUMsSUFBTSxNQUFNLEdBQUc7SUFDcEIsMEJBQTBCLEVBQUUsMEJBQTBCO0lBQ3RELFlBQVksRUFBRSxJQUFXO0lBQ3pCLFdBQVcsRUFBRSxJQUFXO0lBQ3hCLG9CQUFvQixFQUFFLG9CQUFvQjtJQUMxQyxjQUFjLEVBQUUsY0FBYztJQUM5QixhQUFhLEVBQUUsYUFBYTtJQUM1QixXQUFXLEVBQUUsV0FBVztJQUN4QixNQUFNLEVBQUUsTUFBTTtJQUNkLElBQUksRUFBRSxJQUFJO0lBQ1YsWUFBWSxFQUFFLFlBQVk7SUFDMUIsV0FBVyxFQUFFLFdBQVc7SUFDeEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsWUFBWSxFQUFFLFlBQVk7SUFDMUIsWUFBWSxFQUFFLFlBQVk7SUFDMUIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsYUFBYSxFQUFFLGFBQWE7SUFDNUIsV0FBVyxFQUFFLFdBQVc7SUFDeEIsV0FBVyxFQUFFLFdBQVc7SUFDeEIsVUFBVSxFQUFFLFVBQVU7SUFDdEIsS0FBSyxFQUFFLFdBQVc7SUFDbEIsYUFBYSxFQUFFLGFBQWE7SUFDNUIsYUFBYSxFQUFFLGFBQWE7SUFDNUIsaUJBQWlCLEVBQUUsaUJBQWlCO0lBQ3BDLGtCQUFrQixFQUFFLGtCQUFrQjtJQUN0QyxZQUFZLEVBQUUsWUFBWTtJQUMxQiwyQkFBMkIsRUFBRSwyQkFBMkI7SUFDeEQsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ2xDLGtCQUFrQixFQUFFLGtCQUFrQjtJQUN0QyxpQkFBaUIsRUFBRSxpQkFBaUI7SUFDcEMsYUFBYSxFQUFFLGFBQWE7SUFDNUIsYUFBYSxFQUFFLGFBQWE7SUFDNUIsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ2xDLGtCQUFrQixFQUFFLGtCQUFrQjtJQUN0QyxhQUFhLEVBQUUsYUFBYTtJQUM1QixLQUFLLE9BQUE7SUFDTCxTQUFTLEVBQUUsU0FBUztJQUNwQixZQUFZLEVBQUUsWUFBWTtJQUMxQixXQUFXLEVBQUUsV0FBVztJQUN4QixlQUFlLEVBQUUsZUFBZTtJQUNoQyxpQkFBaUIsRUFBRSxpQkFBaUI7SUFDcEMsU0FBUyxFQUFFLFNBQVM7SUFDcEIsT0FBTyxFQUFFLE9BQU87Q0FDakIsQ0FBQztBQWdCRix3QkFBd0I7QUFDeEIsSUFBSSxHQUFRLENBQUM7QUFDYixJQUFJO0lBQ0YsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7Q0FDOUQ7QUFBQyxPQUFPLENBQUMsRUFBRTtDQUVYO0FBQ0QsSUFBSSxHQUFHLEVBQUU7SUFDUCxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztDQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBBYnN0cmFjdERhdGFTZXJ2aWNlQWRhcHRlcn0gZnJvbSAnLi9hYnN0cmFjdC1kYXRhLXNlcnZpY2UtYWRhcHRlcic7XHJcbmltcG9ydCB7IGFzc2VydFBhcmFtLCBhc3NlcnRDb25maWcsIFBhcmFtIH0gZnJvbSAnLi9hc3NlcnQtcGFyYW0nO1xyXG5pbXBvcnQgeyBCcmVlemVDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XHJcbmltcG9ydCB7IEJyZWV6ZUVudW19IGZyb20gJy4vZW51bSc7XHJcbmltcG9ydCB7IEJyZWV6ZUV2ZW50IH0gZnJvbSAnLi9ldmVudCc7XHJcbmltcG9ydCB7IENvbXBsZXhBcnJheSB9IGZyb20gJy4vY29tcGxleC1hcnJheSc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlLCBEYXRhU2VydmljZUNvbmZpZywgSnNvblJlc3VsdHNBZGFwdGVyLCBKc29uUmVzdWx0c0FkYXB0ZXJDb25maWcsIE5vZGVDb250ZXh0LCBOb2RlTWV0YSB9IGZyb20gJy4vZGF0YS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YVR5cGUgIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xyXG5pbXBvcnQgeyBFbnRpdHlBY3Rpb24gfSBmcm9tICcuL2VudGl0eS1hY3Rpb24nO1xyXG5pbXBvcnQgeyBFbnRpdHlBc3BlY3QsIENvbXBsZXhBc3BlY3QsIEVudGl0eSwgQ29tcGxleE9iamVjdCwgU3RydWN0dXJhbE9iamVjdCwgUHJvcGVydHlDaGFuZ2VkRXZlbnRBcmdzIH0gZnJvbSAnLi9lbnRpdHktYXNwZWN0JztcclxuaW1wb3J0IHsgRW50aXR5S2V5IH0gZnJvbSAnLi9lbnRpdHkta2V5JztcclxuaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgRW50aXR5TWFuYWdlckNvbmZpZywgRW50aXR5RXJyb3IsIEVudGl0eUNoYW5nZWRFdmVudEFyZ3MsIFNhdmVDb250ZXh0LCBTYXZlQnVuZGxlLCBIdHRwUmVzcG9uc2UsIEtleU1hcHBpbmcsIFNlcnZlckVycm9yLCBTYXZlUmVzdWx0LCBRdWVyeVJlc3VsdCwgVmFsaWRhdGlvbkVycm9yc0NoYW5nZWRFdmVudEFyZ3MsIEhhc0NoYW5nZXNDaGFuZ2VkRXZlbnRBcmdzIH0gZnJvbSAnLi9lbnRpdHktbWFuYWdlcic7XHJcbmltcG9ydCB7IEVudGl0eVF1ZXJ5LCBGaWx0ZXJRdWVyeU9wLCBCb29sZWFuUXVlcnlPcCwgT3JkZXJCeUNsYXVzZSwgRXhwYW5kQ2xhdXNlLCBTZWxlY3RDbGF1c2UgfSBmcm9tICcuL2VudGl0eS1xdWVyeSc7XHJcbmltcG9ydCB7IEVudGl0eVN0YXRlIH0gZnJvbSAnLi9lbnRpdHktc3RhdGUnO1xyXG5pbXBvcnQgeyBJbnRlcmZhY2VSZWdpc3RyeSwgQWpheEFkYXB0ZXIsIEFqYXhDb25maWcsIERhdGFTZXJ2aWNlQWRhcHRlciwgTW9kZWxMaWJyYXJ5QWRhcHRlciwgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yLCBVcmlCdWlsZGVyQWRhcHRlciwgSW50ZXJmYWNlUmVnaXN0cnlDb25maWcsIEFqYXhSZXF1ZXN0SW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyZmFjZS1yZWdpc3RyeSc7XHJcbmltcG9ydCB7IEtleUdlbmVyYXRvciB9IGZyb20gJy4va2V5LWdlbmVyYXRvcic7XHJcbmltcG9ydCB7IExvY2FsUXVlcnlDb21wYXJpc29uT3B0aW9ucyB9IGZyb20gJy4vbG9jYWwtcXVlcnktY29tcGFyaXNvbi1vcHRpb25zJztcclxuaW1wb3J0IHsgTWFwcGluZ0NvbnRleHQgfSBmcm9tICcuL21hcHBpbmctY29udGV4dCc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU3RvcmUsIEVudGl0eVR5cGUsIENvbXBsZXhUeXBlLCBTdHJ1Y3R1cmFsVHlwZSwgRGF0YVByb3BlcnR5LCBFbnRpdHlQcm9wZXJ0eSwgTmF2aWdhdGlvblByb3BlcnR5LCBBdXRvR2VuZXJhdGVkS2V5VHlwZSAgIH0gZnJvbSAnLi9lbnRpdHktbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBOYW1pbmdDb252ZW50aW9uIH0gZnJvbSAnLi9uYW1pbmctY29udmVudGlvbic7XHJcbmltcG9ydCB7IFByZWRpY2F0ZSwgVmlzaXRDb250ZXh0LCBWaXNpdG9yLCBFeHByZXNzaW9uQ29udGV4dCwgVW5hcnlQcmVkaWNhdGUsIEJpbmFyeVByZWRpY2F0ZSwgQW55QWxsUHJlZGljYXRlLCBBbmRPclByZWRpY2F0ZSwgTGl0RXhwciwgRm5FeHByLCBQcm9wRXhwciB9IGZyb20gJy4vcHJlZGljYXRlJztcclxuaW1wb3J0IHsgUXVlcnlPcHRpb25zLCAgRmV0Y2hTdHJhdGVneSwgTWVyZ2VTdHJhdGVneSB9IGZyb20gJy4vcXVlcnktb3B0aW9ucyc7XHJcbmltcG9ydCB7IFNhdmVPcHRpb25zIH0gZnJvbSAnLi9zYXZlLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdGUnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uT3B0aW9ucyB9IGZyb20gJy4vdmFsaWRhdGlvbi1vcHRpb25zJztcclxuXHJcbmltcG9ydCB7IGNvbmZpZywgQmFzZUFkYXB0ZXIgfSBmcm9tICcuL2NvbmZpZyc7XHJcbmltcG9ydCB7IGNvcmUsIENhbGxiYWNrLCBFcnJvckNhbGxiYWNrIH0gZnJvbSAnLi9jb3JlJztcclxuaW1wb3J0IHsgbWFrZVJlbGF0aW9uQXJyYXksIG1ha2VQcmltaXRpdmVBcnJheSwgbWFrZUNvbXBsZXhBcnJheSB9IGZyb20gJy4vYXJyYXknO1xyXG5cclxuaW1wb3J0IHsgUmVsYXRpb25BcnJheSB9IGZyb20gJy4vcmVsYXRpb24tYXJyYXknO1xyXG5pbXBvcnQgeyBBcnJheUNoYW5nZWRBcmdzIH0gZnJvbSAnLi9vYnNlcnZhYmxlLWFycmF5JztcclxuZXhwb3J0IHsgQnJlZXplQ29uZmlnLCBDb21wbGV4QXJyYXksIFJlbGF0aW9uQXJyYXkgfTtcclxuXHJcbmV4cG9ydCB7XHJcbiAgQWJzdHJhY3REYXRhU2VydmljZUFkYXB0ZXIsXHJcbiAgQWpheEFkYXB0ZXIsXHJcbiAgQWpheENvbmZpZyxcclxuICBBamF4UmVxdWVzdEludGVyY2VwdG9yLFxyXG4gIEFuZE9yUHJlZGljYXRlLFxyXG4gIEFueUFsbFByZWRpY2F0ZSxcclxuICBBcnJheUNoYW5nZWRBcmdzLFxyXG4gIGFzc2VydENvbmZpZyxcclxuICBhc3NlcnRQYXJhbSxcclxuICBBdXRvR2VuZXJhdGVkS2V5VHlwZSxcclxuICBCYXNlQWRhcHRlcixcclxuICBCaW5hcnlQcmVkaWNhdGUsXHJcbiAgQnJlZXplRW51bSxcclxuICBCcmVlemVFdmVudCwgXHJcbiAgQ2FsbGJhY2ssXHJcbiAgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yLFxyXG4gIENvbXBsZXhBc3BlY3QsXHJcbiAgQ29tcGxleE9iamVjdCxcclxuICBDb21wbGV4VHlwZSxcclxuICBjb25maWcsXHJcbiAgY29yZSxcclxuICBEYXRhUHJvcGVydHksXHJcbiAgRGF0YVNlcnZpY2UsXHJcbiAgRGF0YVNlcnZpY2VBZGFwdGVyLFxyXG4gIERhdGFTZXJ2aWNlQ29uZmlnLFxyXG4gIERhdGFUeXBlLFxyXG4gIEVudGl0eSxcclxuICBFbnRpdHlBY3Rpb24sXHJcbiAgRW50aXR5QXNwZWN0LFxyXG4gIEVudGl0eUNoYW5nZWRFdmVudEFyZ3MsXHJcbiAgRW50aXR5RXJyb3IsXHJcbiAgRW50aXR5S2V5LFxyXG4gIEVudGl0eU1hbmFnZXIsXHJcbiAgRW50aXR5TWFuYWdlckNvbmZpZyxcclxuICBFbnRpdHlQcm9wZXJ0eSxcclxuICBFbnRpdHlRdWVyeSxcclxuICBFbnRpdHlTdGF0ZSxcclxuICBFbnRpdHlUeXBlLFxyXG4gIEVycm9yQ2FsbGJhY2ssXHJcbiAgRXhwYW5kQ2xhdXNlLFxyXG4gIEV4cHJlc3Npb25Db250ZXh0LFxyXG4gIEZldGNoU3RyYXRlZ3ksXHJcbiAgRmlsdGVyUXVlcnlPcCxcclxuICBGbkV4cHIsXHJcbiAgSGFzQ2hhbmdlc0NoYW5nZWRFdmVudEFyZ3MsXHJcbiAgSHR0cFJlc3BvbnNlLFxyXG4gIEludGVyZmFjZVJlZ2lzdHJ5LFxyXG4gIEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnLFxyXG4gIEpzb25SZXN1bHRzQWRhcHRlcixcclxuICBKc29uUmVzdWx0c0FkYXB0ZXJDb25maWcsXHJcbiAgS2V5R2VuZXJhdG9yLFxyXG4gIEtleU1hcHBpbmcsXHJcbiAgTGl0RXhwcixcclxuICBMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnMsXHJcbiAgbWFrZUNvbXBsZXhBcnJheSxcclxuICBtYWtlUHJpbWl0aXZlQXJyYXksXHJcbiAgbWFrZVJlbGF0aW9uQXJyYXksXHJcbiAgTWFwcGluZ0NvbnRleHQsXHJcbiAgTWVyZ2VTdHJhdGVneSxcclxuICBNZXRhZGF0YVN0b3JlLFxyXG4gIE1vZGVsTGlicmFyeUFkYXB0ZXIsXHJcbiAgTmFtaW5nQ29udmVudGlvbixcclxuICBOYXZpZ2F0aW9uUHJvcGVydHksXHJcbiAgTm9kZUNvbnRleHQsXHJcbiAgTm9kZU1ldGEsXHJcbiAgT3JkZXJCeUNsYXVzZSxcclxuICBQcmVkaWNhdGUsXHJcbiAgUHJvcGVydHlDaGFuZ2VkRXZlbnRBcmdzLFxyXG4gIFByb3BFeHByLFxyXG4gIFF1ZXJ5T3B0aW9ucyxcclxuICBRdWVyeVJlc3VsdCxcclxuICBTYXZlQnVuZGxlLFxyXG4gIFNhdmVDb250ZXh0LFxyXG4gIFNhdmVPcHRpb25zLFxyXG4gIFNhdmVSZXN1bHQsXHJcbiAgU2VsZWN0Q2xhdXNlLFxyXG4gIFNlcnZlckVycm9yLFxyXG4gIFN0cnVjdHVyYWxPYmplY3QsXHJcbiAgU3RydWN0dXJhbFR5cGUsXHJcbiAgVW5hcnlQcmVkaWNhdGUsXHJcbiAgVXJpQnVpbGRlckFkYXB0ZXIsXHJcbiAgVmFsaWRhdGlvbkVycm9yc0NoYW5nZWRFdmVudEFyZ3MsXHJcbiAgVmFsaWRhdGlvbkVycm9yLFxyXG4gIFZhbGlkYXRpb25PcHRpb25zLFxyXG4gIFZhbGlkYXRvcixcclxuICBWaXNpdENvbnRleHQsXHJcbiAgVmlzaXRvcixcclxufTtcclxuXHJcbi8vIGNyZWF0ZSBhIGJyZWV6ZSB2YXJpYWJsZSBoZXJlXHJcbmV4cG9ydCBjb25zdCBicmVlemUgPSB7XHJcbiAgQWJzdHJhY3REYXRhU2VydmljZUFkYXB0ZXI6IEFic3RyYWN0RGF0YVNlcnZpY2VBZGFwdGVyLFxyXG4gIGFzc2VydENvbmZpZzogbnVsbCBhcyBhbnksXHJcbiAgYXNzZXJ0UGFyYW06IG51bGwgYXMgYW55LFxyXG4gIEF1dG9HZW5lcmF0ZWRLZXlUeXBlOiBBdXRvR2VuZXJhdGVkS2V5VHlwZSxcclxuICBCb29sZWFuUXVlcnlPcDogQm9vbGVhblF1ZXJ5T3AsXHJcbiAgQ29tcGxleEFzcGVjdDogQ29tcGxleEFzcGVjdCxcclxuICBDb21wbGV4VHlwZTogQ29tcGxleFR5cGUsXHJcbiAgY29uZmlnOiBjb25maWcsXHJcbiAgY29yZTogY29yZSxcclxuICBEYXRhUHJvcGVydHk6IERhdGFQcm9wZXJ0eSxcclxuICBEYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgRGF0YVR5cGU6IERhdGFUeXBlLFxyXG4gIEVudGl0eUFjdGlvbjogRW50aXR5QWN0aW9uLFxyXG4gIEVudGl0eUFzcGVjdDogRW50aXR5QXNwZWN0LFxyXG4gIEVudGl0eUtleTogRW50aXR5S2V5LFxyXG4gIEVudGl0eU1hbmFnZXI6IEVudGl0eU1hbmFnZXIsXHJcbiAgRW50aXR5UXVlcnk6IEVudGl0eVF1ZXJ5LFxyXG4gIEVudGl0eVN0YXRlOiBFbnRpdHlTdGF0ZSxcclxuICBFbnRpdHlUeXBlOiBFbnRpdHlUeXBlLFxyXG4gIEV2ZW50OiBCcmVlemVFdmVudCxcclxuICBGZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LFxyXG4gIEZpbHRlclF1ZXJ5T3A6IEZpbHRlclF1ZXJ5T3AsXHJcbiAgSW50ZXJmYWNlUmVnaXN0cnk6IEludGVyZmFjZVJlZ2lzdHJ5LFxyXG4gIEpzb25SZXN1bHRzQWRhcHRlcjogSnNvblJlc3VsdHNBZGFwdGVyLFxyXG4gIEtleUdlbmVyYXRvcjogS2V5R2VuZXJhdG9yLFxyXG4gIExvY2FsUXVlcnlDb21wYXJpc29uT3B0aW9uczogTG9jYWxRdWVyeUNvbXBhcmlzb25PcHRpb25zLFxyXG4gIG1ha2VDb21wbGV4QXJyYXk6IG1ha2VDb21wbGV4QXJyYXksXHJcbiAgbWFrZVByaW1pdGl2ZUFycmF5OiBtYWtlUHJpbWl0aXZlQXJyYXksXHJcbiAgbWFrZVJlbGF0aW9uQXJyYXk6IG1ha2VSZWxhdGlvbkFycmF5LFxyXG4gIE1lcmdlU3RyYXRlZ3k6IE1lcmdlU3RyYXRlZ3ksXHJcbiAgTWV0YWRhdGFTdG9yZTogTWV0YWRhdGFTdG9yZSxcclxuICBOYW1pbmdDb252ZW50aW9uOiBOYW1pbmdDb252ZW50aW9uLFxyXG4gIE5hdmlnYXRpb25Qcm9wZXJ0eTogTmF2aWdhdGlvblByb3BlcnR5LFxyXG4gIE9yZGVyQnlDbGF1c2U6IE9yZGVyQnlDbGF1c2UsIC8vIGZvciB0ZXN0aW5nIG9ubHlcclxuICBQYXJhbSxcclxuICBQcmVkaWNhdGU6IFByZWRpY2F0ZSxcclxuICBRdWVyeU9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyxcclxuICBTYXZlT3B0aW9uczogU2F2ZU9wdGlvbnMsXHJcbiAgVmFsaWRhdGlvbkVycm9yOiBWYWxpZGF0aW9uRXJyb3IsXHJcbiAgVmFsaWRhdGlvbk9wdGlvbnM6IFZhbGlkYXRpb25PcHRpb25zLFxyXG4gIFZhbGlkYXRvcjogVmFsaWRhdG9yLFxyXG4gIHZlcnNpb246IFwiMi4xLjVcIlxyXG59O1xyXG5cclxuLy8gYnJlZXplLmFzc2VydENvbmZpZyA9IGFzc2VydENvbmZpZyBhcyBhbnk7XHJcbi8vIGJyZWV6ZS5hc3NlcnRQYXJhbSA9IGFzc2VydFBhcmFtIGFzIGFueTtcclxuXHJcbmV4cG9ydCBuYW1lc3BhY2UgcHJvbWlzZXMge1xyXG4gIC8qKiBuby1vcCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGJyZWV6ZS1icmlkZ2UyLWFuZ3VsYXIgKi9cclxuICBleHBvcnQgaW50ZXJmYWNlIElQcm9taXNlU2VydmljZSB7fVxyXG59XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZGVjbGFyZSB2YXIgd2luZG93OiBhbnk7XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZGVjbGFyZSB2YXIgZ2xvYmFsOiBhbnk7XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxubGV0IHdpbjogYW55O1xyXG50cnkge1xyXG4gIHdpbiA9IHdpbmRvdyA/IHdpbmRvdyA6IChnbG9iYWwgPyBnbG9iYWwud2luZG93IDogdW5kZWZpbmVkKTtcclxufSBjYXRjaCAoZSkge1xyXG5cclxufVxyXG5pZiAod2luKSB7XHJcbiAgd2luLmJyZWV6ZSA9IGJyZWV6ZTtcclxufVxyXG4iXX0=
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
import { observableArray } from './observable-array';
|
|
3
|
-
import { BreezeEvent } from './event';
|
|
4
|
-
var ɵ0 = function (adds) {
|
|
5
|
-
return getGoodAdds(this, adds);
|
|
6
|
-
}, ɵ1 = function () {
|
|
7
|
-
observableArray.updateEntityState(this);
|
|
8
|
-
}, ɵ2 = function (adds) {
|
|
9
|
-
processAdds(this, adds);
|
|
10
|
-
}, ɵ3 = function (removes) {
|
|
11
|
-
processRemoves(this, removes);
|
|
12
|
-
}, ɵ4 = function () {
|
|
13
|
-
if (!this._origValues)
|
|
14
|
-
return;
|
|
15
|
-
var that = this;
|
|
16
|
-
this.forEach(function (co) {
|
|
17
|
-
clearAspect(co, that);
|
|
18
|
-
});
|
|
19
|
-
this.length = 0;
|
|
20
|
-
this._origValues.forEach(function (co) {
|
|
21
|
-
that.push(co);
|
|
22
|
-
});
|
|
23
|
-
}, ɵ5 = function () {
|
|
24
|
-
this._origValues = null;
|
|
25
|
-
};
|
|
26
|
-
var complexArrayMixin = {
|
|
27
|
-
// complexArray will have the following props
|
|
28
|
-
// parent
|
|
29
|
-
// propertyPath
|
|
30
|
-
// parentProperty
|
|
31
|
-
// addedItems - only if modified
|
|
32
|
-
// removedItems - only if modified
|
|
33
|
-
// each complexAspect of any entity within a complexArray
|
|
34
|
-
// will have its own _complexState = "A/M";
|
|
35
|
-
/**
|
|
36
|
-
Complex arrays are not actually classes, they are objects that mimic arrays. A complex array is collection of
|
|
37
|
-
complexTypes associated with a data property on a single entity or other complex object. i.e. customer.orders or order.orderDetails.
|
|
38
|
-
This collection looks like an array in that the basic methods on arrays such as 'push', 'pop', 'shift', 'unshift', 'splice'
|
|
39
|
-
are all provided as well as several special purpose methods.
|
|
40
|
-
@class {complexArray}
|
|
41
|
-
**/
|
|
42
|
-
/**
|
|
43
|
-
An [[Event]] that fires whenever the contents of this array changed. This event
|
|
44
|
-
is fired any time a new entity is attached or added to the EntityManager and happens to belong to this collection.
|
|
45
|
-
Adds that occur as a result of query or import operations are batched so that all of the adds or removes to any individual
|
|
46
|
-
collections are collected into a single notification event for each relation array.
|
|
47
|
-
@example
|
|
48
|
-
// assume order is an order entity attached to an EntityManager.
|
|
49
|
-
orders.arrayChanged.subscribe(
|
|
50
|
-
function (arrayChangedArgs) {
|
|
51
|
-
var addedEntities = arrayChangedArgs.added;
|
|
52
|
-
var removedEntities = arrayChanged.removed;
|
|
53
|
-
});
|
|
54
|
-
@event arrayChanged
|
|
55
|
-
@param added {Array of Entity} An array of all of the entities added to this collection.
|
|
56
|
-
@param removed {Array of Entity} An array of all of the removed from this collection.
|
|
57
|
-
@readOnly
|
|
58
|
-
**/
|
|
59
|
-
// virtual impls
|
|
60
|
-
_getGoodAdds: ɵ0,
|
|
61
|
-
_beforeChange: ɵ1,
|
|
62
|
-
_processAdds: ɵ2,
|
|
63
|
-
_processRemoves: ɵ3,
|
|
64
|
-
_rejectChanges: ɵ4,
|
|
65
|
-
_acceptChanges: ɵ5
|
|
66
|
-
};
|
|
67
|
-
// local functions
|
|
68
|
-
function getGoodAdds(complexArray, adds) {
|
|
69
|
-
// remove any that are already added here
|
|
70
|
-
return adds.filter(function (a) {
|
|
71
|
-
// return a.parent !== complexArray.parent; // TODO: check if this is actually a bug in original breezejs ???
|
|
72
|
-
return a.complexAspect == null || a.complexAspect.parent !== complexArray.parent;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
function processAdds(complexArray, adds) {
|
|
76
|
-
adds.forEach(function (a) {
|
|
77
|
-
// if (a.parent != null) { // TODO: check if this is actually a bug in original breezejs ???
|
|
78
|
-
if (a.complexAspect && a.complexAspect.parent != null) {
|
|
79
|
-
throw new Error("The complexObject is already attached. Either clone it or remove it from its current owner");
|
|
80
|
-
}
|
|
81
|
-
setAspect(a, complexArray);
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
function processRemoves(complexArray, removes) {
|
|
85
|
-
removes.forEach(function (a) {
|
|
86
|
-
clearAspect(a, complexArray);
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
function clearAspect(co, arr) {
|
|
90
|
-
var coAspect = co.complexAspect;
|
|
91
|
-
// if not already attached - exit
|
|
92
|
-
if (coAspect.parent !== arr.parent)
|
|
93
|
-
return null;
|
|
94
|
-
coAspect.parent = undefined;
|
|
95
|
-
coAspect.parentProperty = undefined;
|
|
96
|
-
return coAspect;
|
|
97
|
-
}
|
|
98
|
-
function setAspect(co, arr) {
|
|
99
|
-
var coAspect = co.complexAspect;
|
|
100
|
-
// if already attached - exit
|
|
101
|
-
if (coAspect.parent === arr.parent)
|
|
102
|
-
return null;
|
|
103
|
-
coAspect.parent = arr.parent;
|
|
104
|
-
coAspect.parentProperty = arr.parentProperty;
|
|
105
|
-
return coAspect;
|
|
106
|
-
}
|
|
107
|
-
/** For use by breeze plugin authors only. The class is for use in building a [[IModelLibraryAdapter]] implementation.
|
|
108
|
-
@adapter (see [[IModelLibraryAdapter]])
|
|
109
|
-
@hidden
|
|
110
|
-
*/
|
|
111
|
-
export function makeComplexArray(arr, parent, parentProperty) {
|
|
112
|
-
var arrX = arr;
|
|
113
|
-
observableArray.initializeParent(arrX, parent, parentProperty);
|
|
114
|
-
arrX.arrayChanged = new BreezeEvent("arrayChanged", arrX);
|
|
115
|
-
core.extend(arrX, observableArray.mixin);
|
|
116
|
-
return core.extend(arrX, complexArrayMixin);
|
|
117
|
-
}
|
|
118
|
-
export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5 };
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxleC1hcnJheS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJzcmMvY29tcGxleC1hcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFHLE1BQU0sUUFBUSxDQUFDO0FBQy9CLE9BQU8sRUFBbUIsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztTQWtEdEIsVUFBUyxJQUFXO0lBQ2hDLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxDQUFDLE9BRWM7SUFDYixlQUFlLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUMsQ0FBQyxPQUVhLFVBQVMsSUFBVztJQUNoQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUMsT0FFZ0IsVUFBUyxPQUFjO0lBQ3RDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEMsQ0FBQyxPQUVlO0lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTztJQUM5QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7SUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQWlCO1FBQ3RDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQWlCO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLE9BRWU7SUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQUMxQixD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QUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBaUIsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSAgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlQXJyYXksIG9ic2VydmFibGVBcnJheSB9IGZyb20gJy4vb2JzZXJ2YWJsZS1hcnJheSc7XHJcbmltcG9ydCB7IEJyZWV6ZUV2ZW50IH0gZnJvbSAnLi9ldmVudCc7XHJcbmltcG9ydCB7IENvbXBsZXhPYmplY3QsIFN0cnVjdHVyYWxPYmplY3QgfSBmcm9tICcuL2VudGl0eS1hc3BlY3QnO1xyXG5pbXBvcnQgeyBEYXRhUHJvcGVydHkgfSBmcm9tICcuL2VudGl0eS1tZXRhZGF0YSc7XHJcblxyXG4vLyBUT0RPOiBtaXhpbiBpbXBsIGlzIG5vdCB2ZXJ5IHR5cGVzYWZlXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXhBcnJheSBleHRlbmRzIE9ic2VydmFibGVBcnJheSB7XHJcbiAgW2luZGV4OiBudW1iZXJdOiBDb21wbGV4T2JqZWN0O1xyXG4gIHBhcmVudD86IFN0cnVjdHVyYWxPYmplY3Q7XHJcbiAgcGFyZW50UHJvcGVydHk/OiBEYXRhUHJvcGVydHk7XHJcbn1cclxuXHJcbmxldCBjb21wbGV4QXJyYXlNaXhpbiA9IHtcclxuXHJcbiAgLy8gY29tcGxleEFycmF5IHdpbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BzXHJcbiAgLy8gICAgcGFyZW50XHJcbiAgLy8gICAgcHJvcGVydHlQYXRoXHJcbiAgLy8gICAgcGFyZW50UHJvcGVydHlcclxuICAvLyAgICBhZGRlZEl0ZW1zICAtIG9ubHkgaWYgbW9kaWZpZWRcclxuICAvLyAgICByZW1vdmVkSXRlbXMgIC0gb25seSBpZiBtb2RpZmllZFxyXG4gIC8vICBlYWNoIGNvbXBsZXhBc3BlY3Qgb2YgYW55IGVudGl0eSB3aXRoaW4gYSBjb21wbGV4QXJyYXlcclxuICAvLyAgd2lsbCBoYXZlIGl0cyBvd24gX2NvbXBsZXhTdGF0ZSA9IFwiQS9NXCI7XHJcblxyXG4gIC8qKlxyXG4gICBDb21wbGV4IGFycmF5cyBhcmUgbm90IGFjdHVhbGx5IGNsYXNzZXMsIHRoZXkgYXJlIG9iamVjdHMgdGhhdCBtaW1pYyBhcnJheXMuIEEgY29tcGxleCBhcnJheSBpcyBjb2xsZWN0aW9uIG9mXHJcbiAgIGNvbXBsZXhUeXBlcyBhc3NvY2lhdGVkIHdpdGggYSBkYXRhIHByb3BlcnR5IG9uIGEgc2luZ2xlIGVudGl0eSBvciBvdGhlciBjb21wbGV4IG9iamVjdC4gaS5lLiBjdXN0b21lci5vcmRlcnMgb3Igb3JkZXIub3JkZXJEZXRhaWxzLlxyXG4gICBUaGlzIGNvbGxlY3Rpb24gbG9va3MgbGlrZSBhbiBhcnJheSBpbiB0aGF0IHRoZSBiYXNpYyBtZXRob2RzIG9uIGFycmF5cyBzdWNoIGFzICdwdXNoJywgJ3BvcCcsICdzaGlmdCcsICd1bnNoaWZ0JywgJ3NwbGljZSdcclxuICAgYXJlIGFsbCBwcm92aWRlZCBhcyB3ZWxsIGFzIHNldmVyYWwgc3BlY2lhbCBwdXJwb3NlIG1ldGhvZHMuXHJcbiAgIEBjbGFzcyB7Y29tcGxleEFycmF5fVxyXG4gICAqKi9cclxuXHJcbiAgLyoqXHJcbiAgQW4gW1tFdmVudF1dIHRoYXQgZmlyZXMgd2hlbmV2ZXIgdGhlIGNvbnRlbnRzIG9mIHRoaXMgYXJyYXkgY2hhbmdlZC4gIFRoaXMgZXZlbnRcclxuICBpcyBmaXJlZCBhbnkgdGltZSBhIG5ldyBlbnRpdHkgaXMgYXR0YWNoZWQgb3IgYWRkZWQgdG8gdGhlIEVudGl0eU1hbmFnZXIgYW5kIGhhcHBlbnMgdG8gYmVsb25nIHRvIHRoaXMgY29sbGVjdGlvbi5cclxuICBBZGRzIHRoYXQgb2NjdXIgYXMgYSByZXN1bHQgb2YgcXVlcnkgb3IgaW1wb3J0IG9wZXJhdGlvbnMgYXJlIGJhdGNoZWQgc28gdGhhdCBhbGwgb2YgdGhlIGFkZHMgb3IgcmVtb3ZlcyB0byBhbnkgaW5kaXZpZHVhbFxyXG4gIGNvbGxlY3Rpb25zIGFyZSBjb2xsZWN0ZWQgaW50byBhIHNpbmdsZSBub3RpZmljYXRpb24gZXZlbnQgZm9yIGVhY2ggcmVsYXRpb24gYXJyYXkuXHJcbiAgQGV4YW1wbGVcclxuICAgICAgLy8gYXNzdW1lIG9yZGVyIGlzIGFuIG9yZGVyIGVudGl0eSBhdHRhY2hlZCB0byBhbiBFbnRpdHlNYW5hZ2VyLlxyXG4gICAgICBvcmRlcnMuYXJyYXlDaGFuZ2VkLnN1YnNjcmliZShcclxuICAgICAgZnVuY3Rpb24gKGFycmF5Q2hhbmdlZEFyZ3MpIHtcclxuICAgICAgICAgIHZhciBhZGRlZEVudGl0aWVzID0gYXJyYXlDaGFuZ2VkQXJncy5hZGRlZDtcclxuICAgICAgICAgIHZhciByZW1vdmVkRW50aXRpZXMgPSBhcnJheUNoYW5nZWQucmVtb3ZlZDtcclxuICAgICAgfSk7XHJcbiAgQGV2ZW50IGFycmF5Q2hhbmdlZFxyXG4gIEBwYXJhbSBhZGRlZCB7QXJyYXkgb2YgRW50aXR5fSBBbiBhcnJheSBvZiBhbGwgb2YgdGhlIGVudGl0aWVzIGFkZGVkIHRvIHRoaXMgY29sbGVjdGlvbi5cclxuICBAcGFyYW0gcmVtb3ZlZCB7QXJyYXkgb2YgRW50aXR5fSBBbiBhcnJheSBvZiBhbGwgb2YgdGhlIHJlbW92ZWQgZnJvbSB0aGlzIGNvbGxlY3Rpb24uXHJcbiAgQHJlYWRPbmx5XHJcbiAgKiovXHJcblxyXG4gICAgLy8gdmlydHVhbCBpbXBsc1xyXG4gIF9nZXRHb29kQWRkczogZnVuY3Rpb24oYWRkczogYW55W10pIHtcclxuICAgIHJldHVybiBnZXRHb29kQWRkcyh0aGlzLCBhZGRzKTtcclxuICB9LFxyXG5cclxuICBfYmVmb3JlQ2hhbmdlOiBmdW5jdGlvbigpIHtcclxuICAgIG9ic2VydmFibGVBcnJheS51cGRhdGVFbnRpdHlTdGF0ZSh0aGlzKTtcclxuICB9LFxyXG5cclxuICBfcHJvY2Vzc0FkZHM6IGZ1bmN0aW9uKGFkZHM6IGFueVtdKSB7XHJcbiAgICBwcm9jZXNzQWRkcyh0aGlzLCBhZGRzKTtcclxuICB9LFxyXG5cclxuICBfcHJvY2Vzc1JlbW92ZXM6IGZ1bmN0aW9uKHJlbW92ZXM6IGFueVtdKSB7XHJcbiAgICBwcm9jZXNzUmVtb3Zlcyh0aGlzLCByZW1vdmVzKTtcclxuICB9LFxyXG5cclxuICBfcmVqZWN0Q2hhbmdlczogZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuX29yaWdWYWx1ZXMpIHJldHVybjtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbiAoY286IENvbXBsZXhPYmplY3QpIHtcclxuICAgICAgY2xlYXJBc3BlY3QoY28sIHRoYXQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLl9vcmlnVmFsdWVzLmZvckVhY2goZnVuY3Rpb24gKGNvOiBDb21wbGV4T2JqZWN0KSB7XHJcbiAgICAgIHRoYXQucHVzaChjbyk7XHJcbiAgICB9KTtcclxuICB9LFxyXG5cclxuICBfYWNjZXB0Q2hhbmdlczogZnVuY3Rpb24oKSB7XHJcbiAgICB0aGlzLl9vcmlnVmFsdWVzID0gbnVsbDtcclxuICB9XHJcbn07XHJcblxyXG4vLyBsb2NhbCBmdW5jdGlvbnNcclxuXHJcblxyXG5mdW5jdGlvbiBnZXRHb29kQWRkcyhjb21wbGV4QXJyYXk6IENvbXBsZXhBcnJheSwgYWRkczogQ29tcGxleE9iamVjdFtdKSB7XHJcbiAgLy8gcmVtb3ZlIGFueSB0aGF0IGFyZSBhbHJlYWR5IGFkZGVkIGhlcmVcclxuICByZXR1cm4gYWRkcy5maWx0ZXIoZnVuY3Rpb24gKGEpIHtcclxuICAgIC8vIHJldHVybiBhLnBhcmVudCAhPT0gY29tcGxleEFycmF5LnBhcmVudDsgIC8vIFRPRE86IGNoZWNrIGlmIHRoaXMgaXMgYWN0dWFsbHkgYSBidWcgaW4gb3JpZ2luYWwgYnJlZXplanMgPz8/XHJcbiAgICByZXR1cm4gYS5jb21wbGV4QXNwZWN0ID09IG51bGwgfHwgYS5jb21wbGV4QXNwZWN0LnBhcmVudCAhPT0gY29tcGxleEFycmF5LnBhcmVudDtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc0FkZHMoY29tcGxleEFycmF5OiBDb21wbGV4QXJyYXksIGFkZHM6IENvbXBsZXhPYmplY3RbXSkge1xyXG4gIGFkZHMuZm9yRWFjaChmdW5jdGlvbiAoYSkge1xyXG4gICAgLy8gaWYgKGEucGFyZW50ICE9IG51bGwpIHsgLy8gVE9ETzogY2hlY2sgaWYgdGhpcyBpcyBhY3R1YWxseSBhIGJ1ZyBpbiBvcmlnaW5hbCBicmVlemVqcyA/Pz9cclxuICAgIGlmIChhLmNvbXBsZXhBc3BlY3QgJiYgYS5jb21wbGV4QXNwZWN0LnBhcmVudCAhPSBudWxsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBjb21wbGV4T2JqZWN0IGlzIGFscmVhZHkgYXR0YWNoZWQuIEVpdGhlciBjbG9uZSBpdCBvciByZW1vdmUgaXQgZnJvbSBpdHMgY3VycmVudCBvd25lclwiKTtcclxuICAgIH1cclxuICAgIHNldEFzcGVjdChhLCBjb21wbGV4QXJyYXkpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9jZXNzUmVtb3Zlcyhjb21wbGV4QXJyYXk6IENvbXBsZXhBcnJheSwgcmVtb3ZlczogQ29tcGxleE9iamVjdFtdKSB7XHJcbiAgcmVtb3Zlcy5mb3JFYWNoKGZ1bmN0aW9uIChhKSB7XHJcbiAgICBjbGVhckFzcGVjdChhLCBjb21wbGV4QXJyYXkpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjbGVhckFzcGVjdChjbzogQ29tcGxleE9iamVjdCwgYXJyOiBDb21wbGV4QXJyYXkpIHtcclxuICBsZXQgY29Bc3BlY3QgPSBjby5jb21wbGV4QXNwZWN0O1xyXG4gIC8vIGlmIG5vdCBhbHJlYWR5IGF0dGFjaGVkIC0gZXhpdFxyXG4gIGlmIChjb0FzcGVjdC5wYXJlbnQgIT09IGFyci5wYXJlbnQpIHJldHVybiBudWxsO1xyXG5cclxuICBjb0FzcGVjdC5wYXJlbnQgPSB1bmRlZmluZWQ7XHJcbiAgY29Bc3BlY3QucGFyZW50UHJvcGVydHkgPSB1bmRlZmluZWQ7XHJcbiAgcmV0dXJuIGNvQXNwZWN0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZXRBc3BlY3QoY286IENvbXBsZXhPYmplY3QsIGFycjogQ29tcGxleEFycmF5KSB7XHJcbiAgbGV0IGNvQXNwZWN0ID0gY28uY29tcGxleEFzcGVjdDtcclxuICAvLyBpZiBhbHJlYWR5IGF0dGFjaGVkIC0gZXhpdFxyXG4gIGlmIChjb0FzcGVjdC5wYXJlbnQgPT09IGFyci5wYXJlbnQpIHJldHVybiBudWxsO1xyXG4gIGNvQXNwZWN0LnBhcmVudCA9IGFyci5wYXJlbnQ7XHJcbiAgY29Bc3BlY3QucGFyZW50UHJvcGVydHkgPSBhcnIucGFyZW50UHJvcGVydHk7XHJcblxyXG4gIHJldHVybiBjb0FzcGVjdDtcclxufVxyXG5cclxuXHJcbi8qKiBGb3IgdXNlIGJ5IGJyZWV6ZSBwbHVnaW4gYXV0aG9ycyBvbmx5LiBUaGUgY2xhc3MgaXMgZm9yIHVzZSBpbiBidWlsZGluZyBhIFtbSU1vZGVsTGlicmFyeUFkYXB0ZXJdXSBpbXBsZW1lbnRhdGlvbi4gXHJcbkBhZGFwdGVyIChzZWUgW1tJTW9kZWxMaWJyYXJ5QWRhcHRlcl1dKSAgICBcclxuQGhpZGRlbiBcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VDb21wbGV4QXJyYXkoYXJyOiBhbnlbXSwgcGFyZW50OiBTdHJ1Y3R1cmFsT2JqZWN0LCBwYXJlbnRQcm9wZXJ0eTogRGF0YVByb3BlcnR5KSB7XHJcbiAgbGV0IGFyclggPSBhcnIgYXMgYW55O1xyXG4gIG9ic2VydmFibGVBcnJheS5pbml0aWFsaXplUGFyZW50KGFyclgsIHBhcmVudCwgcGFyZW50UHJvcGVydHkpO1xyXG4gIGFyclguYXJyYXlDaGFuZ2VkID0gbmV3IEJyZWV6ZUV2ZW50KFwiYXJyYXlDaGFuZ2VkXCIsIGFyclgpO1xyXG4gIGNvcmUuZXh0ZW5kKGFyclgsIG9ic2VydmFibGVBcnJheS5taXhpbik7XHJcbiAgcmV0dXJuIGNvcmUuZXh0ZW5kKGFyclgsIGNvbXBsZXhBcnJheU1peGluKSBhcyBDb21wbGV4QXJyYXk7XHJcbn1cclxuXHJcbiJdfQ==
|