angular-odata 0.124.0 → 0.126.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/esm2022/lib/api.mjs +3 -2
- package/esm2022/lib/cache/storage.mjs +3 -3
- package/esm2022/lib/client.mjs +3 -3
- package/esm2022/lib/constants.mjs +2 -1
- package/esm2022/lib/helper.mjs +2 -2
- package/esm2022/lib/models/collection.mjs +147 -193
- package/esm2022/lib/models/model.mjs +141 -119
- package/esm2022/lib/models/options.mjs +115 -88
- package/esm2022/lib/resources/path/segments.mjs +13 -7
- package/esm2022/lib/resources/query/expressions/base.mjs +8 -3
- package/esm2022/lib/resources/query/expressions/compute.mjs +19 -4
- package/esm2022/lib/resources/query/expressions/count.mjs +24 -7
- package/esm2022/lib/resources/query/expressions/expand.mjs +30 -8
- package/esm2022/lib/resources/query/expressions/filter.mjs +29 -12
- package/esm2022/lib/resources/query/expressions/orderby.mjs +31 -8
- package/esm2022/lib/resources/query/expressions/search.mjs +30 -11
- package/esm2022/lib/resources/query/expressions/select.mjs +16 -4
- package/esm2022/lib/resources/query/expressions/syntax.mjs +185 -31
- package/esm2022/lib/resources/query/handlers.mjs +2 -2
- package/esm2022/lib/resources/query/index.mjs +2 -1
- package/esm2022/lib/resources/query/options.mjs +22 -12
- package/esm2022/lib/resources/request.mjs +4 -3
- package/esm2022/lib/resources/resource.mjs +39 -15
- package/esm2022/lib/resources/responses/annotations.mjs +1 -1
- package/esm2022/lib/resources/responses/response.mjs +3 -3
- package/esm2022/lib/resources/types/batch.mjs +2 -2
- package/esm2022/lib/resources/types/count.mjs +7 -4
- package/esm2022/lib/resources/types/entity-set.mjs +2 -1
- package/esm2022/lib/resources/types/entity.mjs +5 -5
- package/esm2022/lib/resources/types/function.mjs +1 -9
- package/esm2022/lib/resources/types/navigation-property.mjs +3 -2
- package/esm2022/lib/resources/types/options.mjs +1 -1
- package/esm2022/lib/resources/types/property.mjs +11 -3
- package/esm2022/lib/schema/parsers/structured-type.mjs +5 -4
- package/esm2022/lib/schema/structured-type.mjs +13 -2
- package/esm2022/lib/utils/enums.mjs +1 -1
- package/fesm2022/angular-odata.mjs +3873 -3536
- package/fesm2022/angular-odata.mjs.map +1 -1
- package/lib/api.d.ts +2 -2
- package/lib/client.d.ts +1 -1
- package/lib/constants.d.ts +1 -0
- package/lib/helper.d.ts +10 -10
- package/lib/models/collection.d.ts +18 -20
- package/lib/models/model.d.ts +14 -13
- package/lib/models/options.d.ts +38 -13
- package/lib/resources/path/segments.d.ts +8 -11
- package/lib/resources/query/expressions/base.d.ts +6 -3
- package/lib/resources/query/expressions/compute.d.ts +13 -2
- package/lib/resources/query/expressions/count.d.ts +15 -4
- package/lib/resources/query/expressions/expand.d.ts +15 -4
- package/lib/resources/query/expressions/filter.d.ts +15 -4
- package/lib/resources/query/expressions/orderby.d.ts +16 -4
- package/lib/resources/query/expressions/search.d.ts +14 -5
- package/lib/resources/query/expressions/select.d.ts +11 -2
- package/lib/resources/query/expressions/syntax.d.ts +65 -16
- package/lib/resources/query/handlers.d.ts +1 -1
- package/lib/resources/query/index.d.ts +1 -0
- package/lib/resources/query/options.d.ts +4 -3
- package/lib/resources/request.d.ts +3 -2
- package/lib/resources/resource.d.ts +10 -5
- package/lib/resources/responses/annotations.d.ts +9 -9
- package/lib/resources/responses/response.d.ts +2 -2
- package/lib/resources/types/count.d.ts +5 -1
- package/lib/resources/types/function.d.ts +0 -3
- package/lib/resources/types/options.d.ts +2 -1
- package/lib/resources/types/property.d.ts +2 -0
- package/lib/schema/parsers/structured-type.d.ts +1 -0
- package/lib/schema/structured-type.d.ts +2 -1
- package/lib/utils/enums.d.ts +7 -7
- package/package.json +1 -1
|
@@ -17,7 +17,7 @@ export class ODataQueryOptionHandler {
|
|
|
17
17
|
* Converts the managed odata query option to a json object.
|
|
18
18
|
* @returns {any}
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
toJson() {
|
|
21
21
|
return this.o.get(this.n);
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
@@ -382,4 +382,4 @@ export class ODataQueryOptionsHandler {
|
|
|
382
382
|
this.paging(query);
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3F1ZXJ5L2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLEtBQUssRUFNTCxjQUFjLEVBQ2QsR0FBRyxFQUNILFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixnQkFBZ0IsRUFFaEIsaUJBQWlCLEVBRWpCLGdCQUFnQixFQUVoQixnQkFBZ0IsRUFFaEIsZ0JBQWdCLEdBRWpCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFDVSxDQUF3QixFQUN4QixDQUFjO1FBRGQsTUFBQyxHQUFELENBQUMsQ0FBdUI7UUFDeEIsTUFBQyxHQUFELENBQUMsQ0FBYTtJQUNyQixDQUFDO0lBRUo7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsQ0FBTztRQUNYLElB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QUFLLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtnQkFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9EYXRhU3RydWN0dXJlZFR5cGUgfSBmcm9tICcuLi8uLi9zY2hlbWEnO1xuaW1wb3J0IHsgUXVlcnlPcHRpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIGFsaWFzLFxuICBFeHBhbmQsXG4gIEZpbHRlcixcbiAgT3JkZXJCeSxcbiAgU2VsZWN0LFxuICBUcmFuc2Zvcm0sXG4gIG5vcm1hbGl6ZVZhbHVlLFxuICByYXcsXG4gIGR1cmF0aW9uLFxuICBiaW5hcnksXG59IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQge1xuICBDb21wdXRlRXhwcmVzc2lvbixcbiAgQ29tcHV0ZUV4cHJlc3Npb25CdWlsZGVyLFxuICBGaWx0ZXJFeHByZXNzaW9uLFxuICBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlcixcbiAgT3JkZXJCeUV4cHJlc3Npb24sXG4gIE9yZGVyQnlFeHByZXNzaW9uQnVpbGRlcixcbiAgU2VhcmNoRXhwcmVzc2lvbixcbiAgU2VhcmNoRXhwcmVzc2lvbkJ1aWxkZXIsXG4gIEV4cGFuZEV4cHJlc3Npb24sXG4gIEV4cGFuZEV4cHJlc3Npb25CdWlsZGVyLFxuICBTZWxlY3RFeHByZXNzaW9uLFxuICBTZWxlY3RFeHByZXNzaW9uQnVpbGRlcixcbn0gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgdHlwZSB7IE9EYXRhUXVlcnlBcmd1bWVudHMsIE9EYXRhUXVlcnlPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvOiBNYXA8UXVlcnlPcHRpb24sIGFueT4sXG4gICAgcHJpdmF0ZSBuOiBRdWVyeU9wdGlvbixcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqL1xuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbiB0byBhIGpzb24gb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLm8uZ2V0KHRoaXMubik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24gaXMgZW1wdHkuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uIGlzIGVtcHR5LlxuICAgKi9cbiAgZW1wdHkoKSB7XG4gICAgcmV0dXJuIFR5cGVzLmlzRW1wdHkodGhpcy5vLmdldCh0aGlzLm4pKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBQcmltaXRpdmUgVmFsdWVcbiAgLyoqXG4gICAqIEdldCBvciBTZXQgdGhlIHZhbHVlIG9mIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHYgVGhlIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnNcbiAgICovXG4gIHZhbHVlKHY/OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB0aGlzLm8uc2V0KHRoaXMubiwgdik7XG4gICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gQXJyYXkgVmFsdWVcbiAgcHJpdmF0ZSBhc3NlcnRBcnJheSgpOiBhbnlbXSB7XG4gICAgaWYgKCFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKSkpXG4gICAgICB0aGlzLm8uc2V0KHRoaXMubiwgdGhpcy5vLmhhcyh0aGlzLm4pID8gW3RoaXMuby5nZXQodGhpcy5uKV0gOiBbXSk7XG4gICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdXNoIHZhbHVlIHRvIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHB1c2hcbiAgICovXG4gIHB1c2godmFsdWU6IGFueSkge1xuICAgIHRoaXMuYXNzZXJ0QXJyYXkoKS5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdmFsdWUgZnJvbSB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byByZW1vdmVcbiAgICovXG4gIHJlbW92ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5vLnNldChcbiAgICAgIHRoaXMubixcbiAgICAgIHRoaXMuYXNzZXJ0QXJyYXkoKS5maWx0ZXIoKHYpID0+IHYgIT09IHZhbHVlKSxcbiAgICApO1xuICAgIC8vIElmIG9ubHkgb25lIGFuZCBub3QgaXMgYXJyYXkuLi4gZG93biB0byB2YWx1ZVxuICAgIGlmIChcbiAgICAgIHRoaXMuby5nZXQodGhpcy5uKS5sZW5ndGggPT09IDEgJiZcbiAgICAgICFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKVswXSlcbiAgICApXG4gICAgICB0aGlzLm8uc2V0KHRoaXMubiwgdGhpcy5vLmdldCh0aGlzLm4pWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdmFsdWUgYXQgaW5kZXggb2YgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHZhbHVlXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZVxuICAgKi9cbiAgYXQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmFzc2VydEFycmF5KClbaW5kZXhdO1xuICB9XG5cbiAgc29tZShwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5zb21lKHByZWRpY2F0ZSk7XG4gIH1cblxuICBldmVyeShwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5ldmVyeShwcmVkaWNhdGUpO1xuICB9XG5cbiAgZmluZChwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5maW5kKHByZWRpY2F0ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIEhhc2hNYXAgVmFsdWVcbiAgcHJpdmF0ZSBhc3NlcnRPYmplY3QoY3JlYXRlOiBib29sZWFuKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChcbiAgICAgICFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKSkgJiZcbiAgICAgIFR5cGVzLmlzUGxhaW5PYmplY3QodGhpcy5vLmdldCh0aGlzLm4pKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgICB9XG4gICAgbGV0IGFyciA9IHRoaXMuYXNzZXJ0QXJyYXkoKTtcbiAgICBsZXQgb2JqID0gYXJyLmZpbmQoKHYpID0+IFR5cGVzLmlzUGxhaW5PYmplY3QodikpO1xuICAgIGlmICghb2JqICYmIGNyZWF0ZSkge1xuICAgICAgb2JqID0ge307XG4gICAgICBhcnIucHVzaChvYmopO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdmFsdWUgZm9yIHBhdGggaW4gdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKiBAcGFyYW0gcGF0aCBQYXRoIGZvciBzZXQgdGhlIHZhbHVlXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBzZXRcbiAgICovXG4gIHNldChwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QodHJ1ZSk7XG4gICAgT2JqZWN0cy5zZXQob2JqLCBwYXRoLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBmb3IgcGF0aCBmcm9tIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHBhdGggVGhlIHBhdGggZnJvbSBnZXQgdGhlIHZhbHVlXG4gICAqIEBwYXJhbSBkZWYgRGVmYXVsdCBpZiBub3QgZm91bmRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldChwYXRoOiBzdHJpbmcsIGRlZj86IGFueSk6IGFueSB7XG4gICAgbGV0IG9iaiA9IHRoaXMuYXNzZXJ0T2JqZWN0KGZhbHNlKSB8fCB7fTtcbiAgICByZXR1cm4gT2JqZWN0cy5nZXQob2JqLCBwYXRoLCBkZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc2V0IHRoZSB2YWx1ZSBmb3IgcGF0aCBpbiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSBwYXRoXG4gICAqL1xuICB1bnNldChwYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QodHJ1ZSk7XG4gICAgT2JqZWN0cy51bnNldChvYmosIHBhdGgpO1xuXG4gICAgaWYgKFR5cGVzLmlzQXJyYXkodGhpcy5vLmdldCh0aGlzLm4pKSkge1xuICAgICAgdGhpcy5vLnNldChcbiAgICAgICAgdGhpcy5uLFxuICAgICAgICB0aGlzLm8uZ2V0KHRoaXMubikuZmlsdGVyKCh2OiBhbnkpID0+ICFUeXBlcy5pc0VtcHR5KHYpKSxcbiAgICAgICk7XG4gICAgICBpZiAodGhpcy5vLmdldCh0aGlzLm4pLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgdGhpcy5vLnNldCh0aGlzLm4sIHRoaXMuby5nZXQodGhpcy5uKVswXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlc3QgaWYgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uIGhhcyB0aGUgdmFsdWUuXG4gICAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGZvdCB0ZXN0IGlmIHRoZSB2YWx1ZSBpcyBzZXRcbiAgICogQHJldHVybnMgQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSB2YWx1ZSBpcyBzZXRcbiAgICovXG4gIGhhcyhwYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QoZmFsc2UpIHx8IHt9O1xuICAgIHJldHVybiBPYmplY3RzLmhhcyhvYmosIHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHZhbHVlcyBmcm9tIG9iamVjdCBpbnRvIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlcyBPYmplY3QgdG8gbWVyZ2VcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzc2lnbih2YWx1ZXM6IHsgW2F0dHI6IHN0cmluZ106IGFueSB9KSB7XG4gICAgbGV0IG9iaiA9IHRoaXMuYXNzZXJ0T2JqZWN0KHRydWUpO1xuICAgIHJldHVybiBPYmplY3RzLm1lcmdlKG9iaiwgdmFsdWVzKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5vLmRlbGV0ZSh0aGlzLm4pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXI8VD4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uczogT0RhdGFRdWVyeU9wdGlvbnM8VD4pIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJhdyBvZGF0YSB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHJhd1xuICAgKiBAcmV0dXJucyBUaGUgcmF3IHZhbHVlXG4gICAqL1xuICByYXcodmFsdWU6IGFueSkge1xuICAgIHJldHVybiByYXcodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBvZGF0YSBhbGlhcyBwYXJhbWV0ZXJcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAxL29kYXRhLXY0LjAxLXBhcnQyLXVybC1jb252ZW50aW9ucy5odG1sI3NlY19QYXJhbWV0ZXJBbGlhc2VzXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGFsaWFzXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhbGlhc1xuICAgKiBAcmV0dXJucyBUaGUgYWxpYXNcbiAgICovXG4gIGFsaWFzKHZhbHVlOiBhbnksIG5hbWU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYWxpYXModmFsdWUsIG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGR1cmF0aW9uIG9kYXRhIHZhbHVlXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gZHVyYXRpb25cbiAgICogQHJldHVybnMgVGhlIGR1cmF0aW9uIHZhbHVlXG4gICAqL1xuICBkdXJhdGlvbih2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGR1cmF0aW9uKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBiaW5hcnkgb2RhdGEgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiaW5hcnlcbiAgICogQHJldHVybnMgVGhlIGJpbmFyeSB2YWx1ZVxuICAgKi9cbiAgYmluYXJ5KHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gYmluYXJ5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemUgdGhlIGdpdmVuIHZhbHVlIHRvIGEgdmFsaWQgb2RhdGEgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBub3JtYWxpemVcbiAgICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgdmFsdWVcbiAgICovXG4gIG5vcm1hbGl6ZSh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkc2VsZWN0IG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRzZWxlY3QuXG4gICAqIEBwYXJhbSBvcHRzIFNlbGVjdDxUPiB2YWx1ZSBvciBidWlsZGVyIGZ1bmN0aW9uIGZvciBTZWxlY3RFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBzZWxlY3QoXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogU2VsZWN0RXhwcmVzc2lvbkJ1aWxkZXI8VD4sXG4gICAgICBjdXJyZW50PzogU2VsZWN0RXhwcmVzc2lvbjxUPixcbiAgICApID0+IFNlbGVjdEV4cHJlc3Npb248VD4sXG4gICk6IFNlbGVjdEV4cHJlc3Npb248VD47XG4gIHNlbGVjdChvcHRzOiBTZWxlY3Q8VD4pOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2VsZWN0KCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWxlY3Qob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgUXVlcnlPcHRpb24uc2VsZWN0LFxuICAgICAgICBTZWxlY3RFeHByZXNzaW9uLnNlbGVjdChcbiAgICAgICAgICBvcHRzLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFF1ZXJ5T3B0aW9uLnNlbGVjdCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxTZWxlY3Q8VD4+KFF1ZXJ5T3B0aW9uLnNlbGVjdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGV4cGFuZCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZXhwYW5kLlxuICAgKiBAcGFyYW0gb3B0cyBFeHBhbmQ8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgRXhwYW5kRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgZXhwYW5kKFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IEV4cGFuZEV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IEV4cGFuZEV4cHJlc3Npb248VD4sXG4gICAgKSA9PiBFeHBhbmRFeHByZXNzaW9uPFQ+LFxuICApOiBFeHBhbmRFeHByZXNzaW9uPFQ+O1xuICBleHBhbmQob3B0czogRXhwYW5kPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGV4cGFuZCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZXhwYW5kKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmV4cGFuZCxcbiAgICAgICAgRXhwYW5kRXhwcmVzc2lvbi5leHBhbmQoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5leHBhbmQpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248RXhwYW5kPFQ+PihRdWVyeU9wdGlvbi5leHBhbmQsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRjb21wdXRlIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRjb21wdXRlLlxuICAgKiBAbGluayBodHRwczovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMDEvb2RhdGEtdjQuMDEtcGFydDItdXJsLWNvbnZlbnRpb25zLmh0bWwjc2VjX1N5c3RlbVF1ZXJ5T3B0aW9uY29tcHV0ZVxuICAgKiBAcGFyYW0gb3B0cyBzdHJpbmcgdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgQ29tcHV0ZUV4cHJlc3Npb248VD5cbiAgICovXG4gIGNvbXB1dGUoXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogQ29tcHV0ZUV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IENvbXB1dGVFeHByZXNzaW9uPFQ+LFxuICAgICkgPT4gQ29tcHV0ZUV4cHJlc3Npb248VD4sXG4gICk6IENvbXB1dGVFeHByZXNzaW9uPFQ+O1xuICBjb21wdXRlKG9wdHM6IHN0cmluZyk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBjb21wdXRlKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBjb21wdXRlKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmNvbXB1dGUsXG4gICAgICAgIENvbXB1dGVFeHByZXNzaW9uLmNvbXB1dGUoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5jb21wdXRlKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb24uY29tcHV0ZSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGZvcm1hdCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZm9ybWF0LlxuICAgKiBAbGluayBodHRwczovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMDEvb2RhdGEtdjQuMDEtcGFydDItdXJsLWNvbnZlbnRpb25zLmh0bWwjc2VjX1N5c3RlbVF1ZXJ5T3B0aW9uZm9ybWF0XG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBmb3IgZm9ybWF0XG4gICAqL1xuICBmb3JtYXQob3B0czogc3RyaW5nKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZvcm1hdCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZm9ybWF0KG9wdHM/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb24uZm9ybWF0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkdHJhbnNmb3JtIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICR0cmFuc2Zvcm0uXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBmb3IgdHJhbnNmb3JtXG4gICAqL1xuICB0cmFuc2Zvcm0ob3B0czogVHJhbnNmb3JtPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHRyYW5zZm9ybSgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgdHJhbnNmb3JtKG9wdHM/OiBUcmFuc2Zvcm08VD4pOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPFRyYW5zZm9ybTxUPj4oUXVlcnlPcHRpb24udHJhbnNmb3JtLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkc2VhcmNoIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRzZWFyY2guXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBvciBidWlsZGVyIGZ1bmN0aW9uIGZvciBTZWFyY2hFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBzZWFyY2goXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogU2VhcmNoRXhwcmVzc2lvbkJ1aWxkZXI8VD4sXG4gICAgICBjdXJyZW50PzogU2VhcmNoRXhwcmVzc2lvbjxUPixcbiAgICApID0+IFNlYXJjaEV4cHJlc3Npb248VD4sXG4gICk6IFNlYXJjaEV4cHJlc3Npb248VD47XG4gIHNlYXJjaChvcHRzOiBzdHJpbmcpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2VhcmNoKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWFyY2gob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgUXVlcnlPcHRpb24uc2VhcmNoLFxuICAgICAgICBTZWFyY2hFeHByZXNzaW9uLnNlYXJjaChcbiAgICAgICAgICBvcHRzLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFF1ZXJ5T3B0aW9uLnNlYXJjaCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxzdHJpbmc+KFF1ZXJ5T3B0aW9uLnNlYXJjaCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGZpbHRlciBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZmlsdGVyLlxuICAgKiBAcGFyYW0gb3B0cyBGaWx0ZXI8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgRmlsdGVyRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgZmlsdGVyKFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IEZpbHRlckV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IEZpbHRlckV4cHJlc3Npb248VD4sXG4gICAgKSA9PiBGaWx0ZXJFeHByZXNzaW9uPFQ+LFxuICApOiBGaWx0ZXJFeHByZXNzaW9uPFQ+O1xuICBmaWx0ZXIob3B0czogRmlsdGVyPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZpbHRlcigpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZmlsdGVyKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmZpbHRlcixcbiAgICAgICAgRmlsdGVyRXhwcmVzc2lvbi5maWx0ZXIoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5maWx0ZXIpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248RmlsdGVyPFQ+PihRdWVyeU9wdGlvbi5maWx0ZXIsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRvcmRlcmJ5IG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRvcmRlcmJ5LlxuICAgKiBAcGFyYW0gb3B0cyBPcmRlckJ5PFQ+IHZhbHVlIG9yIGJ1aWxkZXIgZnVuY3Rpb24gZm9yIE9yZGVyQnlFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBvcmRlckJ5KFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IE9yZGVyQnlFeHByZXNzaW9uQnVpbGRlcjxUPixcbiAgICAgIGN1cnJlbnQ/OiBPcmRlckJ5RXhwcmVzc2lvbjxUPixcbiAgICApID0+IE9yZGVyQnlFeHByZXNzaW9uPFQ+LFxuICApOiBPcmRlckJ5RXhwcmVzc2lvbjxUPjtcbiAgb3JkZXJCeShvcHRzOiBPcmRlckJ5PFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIG9yZGVyQnkoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIG9yZGVyQnkob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5vcmRlckJ5LFxuICAgICAgICBPcmRlckJ5RXhwcmVzc2lvbi5vcmRlckJ5KFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24ub3JkZXJCeSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxPcmRlckJ5PFQ+PihRdWVyeU9wdGlvbi5vcmRlckJ5LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkdG9wIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICR0b3AuXG4gICAqIEBwYXJhbSBvcHRzIG51bWJlciB2YWx1ZVxuICAgKi9cbiAgdG9wKG9wdHM6IG51bWJlcik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICB0b3AoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHRvcChvcHRzPzogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxudW1iZXI+KFF1ZXJ5T3B0aW9uLnRvcCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJHNraXAgb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJHNraXAuXG4gICAqIEBwYXJhbSBvcHRzIG51bWJlciB2YWx1ZVxuICAgKi9cbiAgc2tpcChvcHRzOiBudW1iZXIpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcChvcHRzPzogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxudW1iZXI+KFF1ZXJ5T3B0aW9uLnNraXAsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRza2lwdG9rZW4gb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJHNraXB0b2tlbi5cbiAgICogQHBhcmFtIG9wdHMgc3RyaW5nIHZhbHVlXG4gICAqL1xuICBza2lwdG9rZW4ob3B0czogc3RyaW5nKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNraXB0b2tlbigpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcHRva2VuKG9wdHM/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb24uc2tpcHRva2VuLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG9ydGN1dCBmb3Igc2V0ICR0b3AsICRza2lwLCAkc2tpcHRva2VuLlxuICAgKiBAcGFyYW0gcGFyYW0wIHNraXAgb3IgdG9wIG9yIHNraXB0b2tlblxuICAgKi9cbiAgcGFnaW5nKHtcbiAgICBza2lwLFxuICAgIHNraXB0b2tlbixcbiAgICB0b3AsXG4gIH06IHtcbiAgICBza2lwPzogbnVtYmVyIHwgbnVsbDtcbiAgICBza2lwdG9rZW4/OiBzdHJpbmcgfCBudWxsO1xuICAgIHRvcD86IG51bWJlciB8IG51bGw7XG4gIH0gPSB7fSkge1xuICAgIGlmIChza2lwdG9rZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHNraXB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNraXB0b2tlbihza2lwdG9rZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi5za2lwdG9rZW4pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2tpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoc2tpcCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNraXAoc2tpcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0b3AgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy50b3AodG9wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24udG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgZm9yIGNsZWFyIHBhZ2luYXRpb24gYnkgdW5zZXQgJHRvcCwgJHNraXAsICRza2lwdG9rZW4uXG4gICAqL1xuICBjbGVhclBhZ2luZygpIHtcbiAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXApO1xuICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24udG9wKTtcbiAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXB0b2tlbik7XG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgZm9yIGNsZWFyIHF1ZXJ5LlxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5vcHRpb25zLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnVuIHRoZSBxdWVyeS5cbiAgICovXG4gIHF1ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudG9RdWVyeUFyZ3VtZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoZSBnaXZlbiBxdWVyeSBvcHRpb25zIHRvIHRoZSBjdXJyZW50IHF1ZXJ5LlxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHRvIGJlIGFwcGxpZWQuXG4gICAqL1xuICBhcHBseShxdWVyeTogT0RhdGFRdWVyeUFyZ3VtZW50czxUPikge1xuICAgIGlmIChxdWVyeS5zZWxlY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LnNlbGVjdCBpbnN0YW5jZW9mIFNlbGVjdEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uc2VsZWN0LFxuICAgICAgICAgIHF1ZXJ5LnNlbGVjdCBhcyBTZWxlY3RFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5zZWxlY3QgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5zZWxlY3QsIHF1ZXJ5LnNlbGVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNlbGVjdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5leHBhbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LmV4cGFuZCBpbnN0YW5jZW9mIEV4cGFuZEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uZXhwYW5kLFxuICAgICAgICAgIHF1ZXJ5LmV4cGFuZCBhcyBFeHBhbmRFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5leHBhbmQgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5leHBhbmQsIHF1ZXJ5LmV4cGFuZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmV4cGFuZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5jb21wdXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS5jb21wdXRlIGluc3RhbmNlb2YgQ29tcHV0ZUV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uY29tcHV0ZSxcbiAgICAgICAgICBxdWVyeS5jb21wdXRlIGFzIENvbXB1dGVFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5jb21wdXRlICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vcHRpb24oUXVlcnlPcHRpb24uY29tcHV0ZSwgcXVlcnkuY29tcHV0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmNvbXB1dGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnkudHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS50cmFuc2Zvcm0gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi50cmFuc2Zvcm0sIHF1ZXJ5LnRyYW5zZm9ybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnRyYW5zZm9ybSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5zZWFyY2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LnNlYXJjaCBpbnN0YW5jZW9mIFNlYXJjaEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uc2VhcmNoLFxuICAgICAgICAgIHF1ZXJ5LnNlYXJjaCBhcyBTZWFyY2hFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5zZWFyY2ggIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5zZWFyY2gsIHF1ZXJ5LnNlYXJjaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNlYXJjaCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5maWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LmZpbHRlciBpbnN0YW5jZW9mIEZpbHRlckV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uZmlsdGVyLFxuICAgICAgICAgIHF1ZXJ5LmZpbHRlciBhcyBGaWx0ZXJFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5maWx0ZXIgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5maWx0ZXIsIHF1ZXJ5LmZpbHRlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5vcmRlckJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS5vcmRlckJ5IGluc3RhbmNlb2YgT3JkZXJCeUV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24ub3JkZXJCeSxcbiAgICAgICAgICBxdWVyeS5vcmRlckJ5IGFzIE9yZGVyQnlFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5vcmRlckJ5ICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vcHRpb24oUXVlcnlPcHRpb24ub3JkZXJCeSwgcXVlcnkub3JkZXJCeSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLm9yZGVyQnkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBhZ2luZyhxdWVyeSk7XG4gIH1cbn1cbiJdfQ==
|
|
385
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3F1ZXJ5L2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLEtBQUssRUFNTCxjQUFjLEVBQ2QsR0FBRyxFQUNILFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixnQkFBZ0IsRUFFaEIsaUJBQWlCLEVBRWpCLGdCQUFnQixFQUVoQixnQkFBZ0IsRUFFaEIsZ0JBQWdCLEdBRWpCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFDVSxDQUF3QixFQUN4QixDQUFjO1FBRGQsTUFBQyxHQUFELENBQUMsQ0FBdUI7UUFDeEIsTUFBQyxHQUFELENBQUMsQ0FBYTtJQUNyQixDQUFDO0lBRUo7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsQ0FBTztRQUNYLElB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QUFLLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtnQkFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9EYXRhU3RydWN0dXJlZFR5cGUgfSBmcm9tICcuLi8uLi9zY2hlbWEnO1xuaW1wb3J0IHsgUXVlcnlPcHRpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIGFsaWFzLFxuICBFeHBhbmQsXG4gIEZpbHRlcixcbiAgT3JkZXJCeSxcbiAgU2VsZWN0LFxuICBUcmFuc2Zvcm0sXG4gIG5vcm1hbGl6ZVZhbHVlLFxuICByYXcsXG4gIGR1cmF0aW9uLFxuICBiaW5hcnksXG59IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQge1xuICBDb21wdXRlRXhwcmVzc2lvbixcbiAgQ29tcHV0ZUV4cHJlc3Npb25CdWlsZGVyLFxuICBGaWx0ZXJFeHByZXNzaW9uLFxuICBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlcixcbiAgT3JkZXJCeUV4cHJlc3Npb24sXG4gIE9yZGVyQnlFeHByZXNzaW9uQnVpbGRlcixcbiAgU2VhcmNoRXhwcmVzc2lvbixcbiAgU2VhcmNoRXhwcmVzc2lvbkJ1aWxkZXIsXG4gIEV4cGFuZEV4cHJlc3Npb24sXG4gIEV4cGFuZEV4cHJlc3Npb25CdWlsZGVyLFxuICBTZWxlY3RFeHByZXNzaW9uLFxuICBTZWxlY3RFeHByZXNzaW9uQnVpbGRlcixcbn0gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgdHlwZSB7IE9EYXRhUXVlcnlBcmd1bWVudHMsIE9EYXRhUXVlcnlPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvOiBNYXA8UXVlcnlPcHRpb24sIGFueT4sXG4gICAgcHJpdmF0ZSBuOiBRdWVyeU9wdGlvbixcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqL1xuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbiB0byBhIGpzb24gb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgdG9Kc29uKCkge1xuICAgIHJldHVybiB0aGlzLm8uZ2V0KHRoaXMubik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24gaXMgZW1wdHkuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uIGlzIGVtcHR5LlxuICAgKi9cbiAgZW1wdHkoKSB7XG4gICAgcmV0dXJuIFR5cGVzLmlzRW1wdHkodGhpcy5vLmdldCh0aGlzLm4pKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBQcmltaXRpdmUgVmFsdWVcbiAgLyoqXG4gICAqIEdldCBvciBTZXQgdGhlIHZhbHVlIG9mIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHYgVGhlIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnNcbiAgICovXG4gIHZhbHVlKHY/OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB0aGlzLm8uc2V0KHRoaXMubiwgdik7XG4gICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gQXJyYXkgVmFsdWVcbiAgcHJpdmF0ZSBhc3NlcnRBcnJheSgpOiBhbnlbXSB7XG4gICAgaWYgKCFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKSkpXG4gICAgICB0aGlzLm8uc2V0KHRoaXMubiwgdGhpcy5vLmhhcyh0aGlzLm4pID8gW3RoaXMuby5nZXQodGhpcy5uKV0gOiBbXSk7XG4gICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdXNoIHZhbHVlIHRvIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHB1c2hcbiAgICovXG4gIHB1c2godmFsdWU6IGFueSkge1xuICAgIHRoaXMuYXNzZXJ0QXJyYXkoKS5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdmFsdWUgZnJvbSB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byByZW1vdmVcbiAgICovXG4gIHJlbW92ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5vLnNldChcbiAgICAgIHRoaXMubixcbiAgICAgIHRoaXMuYXNzZXJ0QXJyYXkoKS5maWx0ZXIoKHYpID0+IHYgIT09IHZhbHVlKSxcbiAgICApO1xuICAgIC8vIElmIG9ubHkgb25lIGFuZCBub3QgaXMgYXJyYXkuLi4gZG93biB0byB2YWx1ZVxuICAgIGlmIChcbiAgICAgIHRoaXMuby5nZXQodGhpcy5uKS5sZW5ndGggPT09IDEgJiZcbiAgICAgICFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKVswXSlcbiAgICApXG4gICAgICB0aGlzLm8uc2V0KHRoaXMubiwgdGhpcy5vLmdldCh0aGlzLm4pWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdmFsdWUgYXQgaW5kZXggb2YgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHZhbHVlXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZVxuICAgKi9cbiAgYXQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmFzc2VydEFycmF5KClbaW5kZXhdO1xuICB9XG5cbiAgc29tZShwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5zb21lKHByZWRpY2F0ZSk7XG4gIH1cblxuICBldmVyeShwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5ldmVyeShwcmVkaWNhdGUpO1xuICB9XG5cbiAgZmluZChwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5maW5kKHByZWRpY2F0ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIEhhc2hNYXAgVmFsdWVcbiAgcHJpdmF0ZSBhc3NlcnRPYmplY3QoY3JlYXRlOiBib29sZWFuKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChcbiAgICAgICFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKSkgJiZcbiAgICAgIFR5cGVzLmlzUGxhaW5PYmplY3QodGhpcy5vLmdldCh0aGlzLm4pKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgICB9XG4gICAgbGV0IGFyciA9IHRoaXMuYXNzZXJ0QXJyYXkoKTtcbiAgICBsZXQgb2JqID0gYXJyLmZpbmQoKHYpID0+IFR5cGVzLmlzUGxhaW5PYmplY3QodikpO1xuICAgIGlmICghb2JqICYmIGNyZWF0ZSkge1xuICAgICAgb2JqID0ge307XG4gICAgICBhcnIucHVzaChvYmopO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdmFsdWUgZm9yIHBhdGggaW4gdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKiBAcGFyYW0gcGF0aCBQYXRoIGZvciBzZXQgdGhlIHZhbHVlXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBzZXRcbiAgICovXG4gIHNldChwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QodHJ1ZSk7XG4gICAgT2JqZWN0cy5zZXQob2JqLCBwYXRoLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBmb3IgcGF0aCBmcm9tIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHBhdGggVGhlIHBhdGggZnJvbSBnZXQgdGhlIHZhbHVlXG4gICAqIEBwYXJhbSBkZWYgRGVmYXVsdCBpZiBub3QgZm91bmRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldChwYXRoOiBzdHJpbmcsIGRlZj86IGFueSk6IGFueSB7XG4gICAgbGV0IG9iaiA9IHRoaXMuYXNzZXJ0T2JqZWN0KGZhbHNlKSB8fCB7fTtcbiAgICByZXR1cm4gT2JqZWN0cy5nZXQob2JqLCBwYXRoLCBkZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc2V0IHRoZSB2YWx1ZSBmb3IgcGF0aCBpbiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSBwYXRoXG4gICAqL1xuICB1bnNldChwYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QodHJ1ZSk7XG4gICAgT2JqZWN0cy51bnNldChvYmosIHBhdGgpO1xuXG4gICAgaWYgKFR5cGVzLmlzQXJyYXkodGhpcy5vLmdldCh0aGlzLm4pKSkge1xuICAgICAgdGhpcy5vLnNldChcbiAgICAgICAgdGhpcy5uLFxuICAgICAgICB0aGlzLm8uZ2V0KHRoaXMubikuZmlsdGVyKCh2OiBhbnkpID0+ICFUeXBlcy5pc0VtcHR5KHYpKSxcbiAgICAgICk7XG4gICAgICBpZiAodGhpcy5vLmdldCh0aGlzLm4pLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgdGhpcy5vLnNldCh0aGlzLm4sIHRoaXMuby5nZXQodGhpcy5uKVswXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlc3QgaWYgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uIGhhcyB0aGUgdmFsdWUuXG4gICAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGZvdCB0ZXN0IGlmIHRoZSB2YWx1ZSBpcyBzZXRcbiAgICogQHJldHVybnMgQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSB2YWx1ZSBpcyBzZXRcbiAgICovXG4gIGhhcyhwYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QoZmFsc2UpIHx8IHt9O1xuICAgIHJldHVybiBPYmplY3RzLmhhcyhvYmosIHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHZhbHVlcyBmcm9tIG9iamVjdCBpbnRvIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlcyBPYmplY3QgdG8gbWVyZ2VcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzc2lnbih2YWx1ZXM6IHsgW2F0dHI6IHN0cmluZ106IGFueSB9KSB7XG4gICAgbGV0IG9iaiA9IHRoaXMuYXNzZXJ0T2JqZWN0KHRydWUpO1xuICAgIHJldHVybiBPYmplY3RzLm1lcmdlKG9iaiwgdmFsdWVzKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5vLmRlbGV0ZSh0aGlzLm4pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXI8VD4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uczogT0RhdGFRdWVyeU9wdGlvbnM8VD4pIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJhdyBvZGF0YSB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHJhd1xuICAgKiBAcmV0dXJucyBUaGUgcmF3IHZhbHVlXG4gICAqL1xuICByYXcodmFsdWU6IGFueSkge1xuICAgIHJldHVybiByYXcodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBvZGF0YSBhbGlhcyBwYXJhbWV0ZXJcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAxL29kYXRhLXY0LjAxLXBhcnQyLXVybC1jb252ZW50aW9ucy5odG1sI3NlY19QYXJhbWV0ZXJBbGlhc2VzXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGFsaWFzXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhbGlhc1xuICAgKiBAcmV0dXJucyBUaGUgYWxpYXNcbiAgICovXG4gIGFsaWFzKHZhbHVlOiBhbnksIG5hbWU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYWxpYXModmFsdWUsIG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGR1cmF0aW9uIG9kYXRhIHZhbHVlXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gZHVyYXRpb25cbiAgICogQHJldHVybnMgVGhlIGR1cmF0aW9uIHZhbHVlXG4gICAqL1xuICBkdXJhdGlvbih2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGR1cmF0aW9uKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBiaW5hcnkgb2RhdGEgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiaW5hcnlcbiAgICogQHJldHVybnMgVGhlIGJpbmFyeSB2YWx1ZVxuICAgKi9cbiAgYmluYXJ5KHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gYmluYXJ5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemUgdGhlIGdpdmVuIHZhbHVlIHRvIGEgdmFsaWQgb2RhdGEgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBub3JtYWxpemVcbiAgICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgdmFsdWVcbiAgICovXG4gIG5vcm1hbGl6ZSh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkc2VsZWN0IG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRzZWxlY3QuXG4gICAqIEBwYXJhbSBvcHRzIFNlbGVjdDxUPiB2YWx1ZSBvciBidWlsZGVyIGZ1bmN0aW9uIGZvciBTZWxlY3RFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBzZWxlY3QoXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogU2VsZWN0RXhwcmVzc2lvbkJ1aWxkZXI8VD4sXG4gICAgICBjdXJyZW50PzogU2VsZWN0RXhwcmVzc2lvbjxUPixcbiAgICApID0+IFNlbGVjdEV4cHJlc3Npb248VD4sXG4gICk6IFNlbGVjdEV4cHJlc3Npb248VD47XG4gIHNlbGVjdChvcHRzOiBTZWxlY3Q8VD4pOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2VsZWN0KCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWxlY3Qob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgUXVlcnlPcHRpb24uc2VsZWN0LFxuICAgICAgICBTZWxlY3RFeHByZXNzaW9uLnNlbGVjdChcbiAgICAgICAgICBvcHRzLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFF1ZXJ5T3B0aW9uLnNlbGVjdCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxTZWxlY3Q8VD4+KFF1ZXJ5T3B0aW9uLnNlbGVjdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGV4cGFuZCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZXhwYW5kLlxuICAgKiBAcGFyYW0gb3B0cyBFeHBhbmQ8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgRXhwYW5kRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgZXhwYW5kKFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IEV4cGFuZEV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IEV4cGFuZEV4cHJlc3Npb248VD4sXG4gICAgKSA9PiBFeHBhbmRFeHByZXNzaW9uPFQ+LFxuICApOiBFeHBhbmRFeHByZXNzaW9uPFQ+O1xuICBleHBhbmQob3B0czogRXhwYW5kPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGV4cGFuZCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZXhwYW5kKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmV4cGFuZCxcbiAgICAgICAgRXhwYW5kRXhwcmVzc2lvbi5leHBhbmQoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5leHBhbmQpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248RXhwYW5kPFQ+PihRdWVyeU9wdGlvbi5leHBhbmQsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRjb21wdXRlIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRjb21wdXRlLlxuICAgKiBAbGluayBodHRwczovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMDEvb2RhdGEtdjQuMDEtcGFydDItdXJsLWNvbnZlbnRpb25zLmh0bWwjc2VjX1N5c3RlbVF1ZXJ5T3B0aW9uY29tcHV0ZVxuICAgKiBAcGFyYW0gb3B0cyBzdHJpbmcgdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgQ29tcHV0ZUV4cHJlc3Npb248VD5cbiAgICovXG4gIGNvbXB1dGUoXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogQ29tcHV0ZUV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IENvbXB1dGVFeHByZXNzaW9uPFQ+LFxuICAgICkgPT4gQ29tcHV0ZUV4cHJlc3Npb248VD4sXG4gICk6IENvbXB1dGVFeHByZXNzaW9uPFQ+O1xuICBjb21wdXRlKG9wdHM6IHN0cmluZyk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBjb21wdXRlKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBjb21wdXRlKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmNvbXB1dGUsXG4gICAgICAgIENvbXB1dGVFeHByZXNzaW9uLmNvbXB1dGUoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5jb21wdXRlKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb24uY29tcHV0ZSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGZvcm1hdCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZm9ybWF0LlxuICAgKiBAbGluayBodHRwczovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMDEvb2RhdGEtdjQuMDEtcGFydDItdXJsLWNvbnZlbnRpb25zLmh0bWwjc2VjX1N5c3RlbVF1ZXJ5T3B0aW9uZm9ybWF0XG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBmb3IgZm9ybWF0XG4gICAqL1xuICBmb3JtYXQob3B0czogc3RyaW5nKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZvcm1hdCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZm9ybWF0KG9wdHM/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb24uZm9ybWF0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkdHJhbnNmb3JtIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICR0cmFuc2Zvcm0uXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBmb3IgdHJhbnNmb3JtXG4gICAqL1xuICB0cmFuc2Zvcm0ob3B0czogVHJhbnNmb3JtPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHRyYW5zZm9ybSgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgdHJhbnNmb3JtKG9wdHM/OiBUcmFuc2Zvcm08VD4pOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPFRyYW5zZm9ybTxUPj4oUXVlcnlPcHRpb24udHJhbnNmb3JtLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkc2VhcmNoIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRzZWFyY2guXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBvciBidWlsZGVyIGZ1bmN0aW9uIGZvciBTZWFyY2hFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBzZWFyY2goXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogU2VhcmNoRXhwcmVzc2lvbkJ1aWxkZXI8VD4sXG4gICAgICBjdXJyZW50PzogU2VhcmNoRXhwcmVzc2lvbjxUPixcbiAgICApID0+IFNlYXJjaEV4cHJlc3Npb248VD4sXG4gICk6IFNlYXJjaEV4cHJlc3Npb248VD47XG4gIHNlYXJjaChvcHRzOiBzdHJpbmcpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2VhcmNoKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWFyY2gob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgUXVlcnlPcHRpb24uc2VhcmNoLFxuICAgICAgICBTZWFyY2hFeHByZXNzaW9uLnNlYXJjaChcbiAgICAgICAgICBvcHRzLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFF1ZXJ5T3B0aW9uLnNlYXJjaCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxzdHJpbmc+KFF1ZXJ5T3B0aW9uLnNlYXJjaCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGZpbHRlciBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZmlsdGVyLlxuICAgKiBAcGFyYW0gb3B0cyBGaWx0ZXI8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgRmlsdGVyRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgZmlsdGVyKFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IEZpbHRlckV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IEZpbHRlckV4cHJlc3Npb248VD4sXG4gICAgKSA9PiBGaWx0ZXJFeHByZXNzaW9uPFQ+LFxuICApOiBGaWx0ZXJFeHByZXNzaW9uPFQ+O1xuICBmaWx0ZXIob3B0czogRmlsdGVyPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZpbHRlcigpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZmlsdGVyKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmZpbHRlcixcbiAgICAgICAgRmlsdGVyRXhwcmVzc2lvbi5maWx0ZXIoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5maWx0ZXIpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248RmlsdGVyPFQ+PihRdWVyeU9wdGlvbi5maWx0ZXIsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRvcmRlcmJ5IG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRvcmRlcmJ5LlxuICAgKiBAcGFyYW0gb3B0cyBPcmRlckJ5PFQ+IHZhbHVlIG9yIGJ1aWxkZXIgZnVuY3Rpb24gZm9yIE9yZGVyQnlFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBvcmRlckJ5KFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IE9yZGVyQnlFeHByZXNzaW9uQnVpbGRlcjxUPixcbiAgICAgIGN1cnJlbnQ/OiBPcmRlckJ5RXhwcmVzc2lvbjxUPixcbiAgICApID0+IE9yZGVyQnlFeHByZXNzaW9uPFQ+LFxuICApOiBPcmRlckJ5RXhwcmVzc2lvbjxUPjtcbiAgb3JkZXJCeShvcHRzOiBPcmRlckJ5PFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIG9yZGVyQnkoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIG9yZGVyQnkob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5vcmRlckJ5LFxuICAgICAgICBPcmRlckJ5RXhwcmVzc2lvbi5vcmRlckJ5KFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24ub3JkZXJCeSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxPcmRlckJ5PFQ+PihRdWVyeU9wdGlvbi5vcmRlckJ5LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkdG9wIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICR0b3AuXG4gICAqIEBwYXJhbSBvcHRzIG51bWJlciB2YWx1ZVxuICAgKi9cbiAgdG9wKG9wdHM6IG51bWJlcik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICB0b3AoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHRvcChvcHRzPzogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxudW1iZXI+KFF1ZXJ5T3B0aW9uLnRvcCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJHNraXAgb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJHNraXAuXG4gICAqIEBwYXJhbSBvcHRzIG51bWJlciB2YWx1ZVxuICAgKi9cbiAgc2tpcChvcHRzOiBudW1iZXIpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcChvcHRzPzogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxudW1iZXI+KFF1ZXJ5T3B0aW9uLnNraXAsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRza2lwdG9rZW4gb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJHNraXB0b2tlbi5cbiAgICogQHBhcmFtIG9wdHMgc3RyaW5nIHZhbHVlXG4gICAqL1xuICBza2lwdG9rZW4ob3B0czogc3RyaW5nKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNraXB0b2tlbigpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcHRva2VuKG9wdHM/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb24uc2tpcHRva2VuLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG9ydGN1dCBmb3Igc2V0ICR0b3AsICRza2lwLCAkc2tpcHRva2VuLlxuICAgKiBAcGFyYW0gcGFyYW0wIHNraXAgb3IgdG9wIG9yIHNraXB0b2tlblxuICAgKi9cbiAgcGFnaW5nKHtcbiAgICBza2lwLFxuICAgIHNraXB0b2tlbixcbiAgICB0b3AsXG4gIH06IHtcbiAgICBza2lwPzogbnVtYmVyIHwgbnVsbDtcbiAgICBza2lwdG9rZW4/OiBzdHJpbmcgfCBudWxsO1xuICAgIHRvcD86IG51bWJlciB8IG51bGw7XG4gIH0gPSB7fSkge1xuICAgIGlmIChza2lwdG9rZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHNraXB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNraXB0b2tlbihza2lwdG9rZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi5za2lwdG9rZW4pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2tpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoc2tpcCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNraXAoc2tpcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0b3AgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy50b3AodG9wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24udG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgZm9yIGNsZWFyIHBhZ2luYXRpb24gYnkgdW5zZXQgJHRvcCwgJHNraXAsICRza2lwdG9rZW4uXG4gICAqL1xuICBjbGVhclBhZ2luZygpIHtcbiAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXApO1xuICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24udG9wKTtcbiAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXB0b2tlbik7XG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgZm9yIGNsZWFyIHF1ZXJ5LlxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5vcHRpb25zLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cnVuIHRoZSBxdWVyeS5cbiAgICovXG4gIHF1ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudG9RdWVyeUFyZ3VtZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoZSBnaXZlbiBxdWVyeSBvcHRpb25zIHRvIHRoZSBjdXJyZW50IHF1ZXJ5LlxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHRvIGJlIGFwcGxpZWQuXG4gICAqL1xuICBhcHBseShxdWVyeTogT0RhdGFRdWVyeUFyZ3VtZW50czxUPikge1xuICAgIGlmIChxdWVyeS5zZWxlY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LnNlbGVjdCBpbnN0YW5jZW9mIFNlbGVjdEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uc2VsZWN0LFxuICAgICAgICAgIHF1ZXJ5LnNlbGVjdCBhcyBTZWxlY3RFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5zZWxlY3QgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5zZWxlY3QsIHF1ZXJ5LnNlbGVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNlbGVjdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5leHBhbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LmV4cGFuZCBpbnN0YW5jZW9mIEV4cGFuZEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uZXhwYW5kLFxuICAgICAgICAgIHF1ZXJ5LmV4cGFuZCBhcyBFeHBhbmRFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5leHBhbmQgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5leHBhbmQsIHF1ZXJ5LmV4cGFuZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmV4cGFuZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5jb21wdXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS5jb21wdXRlIGluc3RhbmNlb2YgQ29tcHV0ZUV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uY29tcHV0ZSxcbiAgICAgICAgICBxdWVyeS5jb21wdXRlIGFzIENvbXB1dGVFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5jb21wdXRlICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vcHRpb24oUXVlcnlPcHRpb24uY29tcHV0ZSwgcXVlcnkuY29tcHV0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmNvbXB1dGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnkudHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS50cmFuc2Zvcm0gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi50cmFuc2Zvcm0sIHF1ZXJ5LnRyYW5zZm9ybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnRyYW5zZm9ybSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5zZWFyY2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LnNlYXJjaCBpbnN0YW5jZW9mIFNlYXJjaEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uc2VhcmNoLFxuICAgICAgICAgIHF1ZXJ5LnNlYXJjaCBhcyBTZWFyY2hFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5zZWFyY2ggIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5zZWFyY2gsIHF1ZXJ5LnNlYXJjaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNlYXJjaCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5maWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXJ5LmZpbHRlciBpbnN0YW5jZW9mIEZpbHRlckV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uZmlsdGVyLFxuICAgICAgICAgIHF1ZXJ5LmZpbHRlciBhcyBGaWx0ZXJFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5maWx0ZXIgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5maWx0ZXIsIHF1ZXJ5LmZpbHRlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeS5vcmRlckJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWVyeS5vcmRlckJ5IGluc3RhbmNlb2YgT3JkZXJCeUV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24ub3JkZXJCeSxcbiAgICAgICAgICBxdWVyeS5vcmRlckJ5IGFzIE9yZGVyQnlFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChxdWVyeS5vcmRlckJ5ICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vcHRpb24oUXVlcnlPcHRpb24ub3JkZXJCeSwgcXVlcnkub3JkZXJCeSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLm9yZGVyQnkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBhZ2luZyhxdWVyeSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './builder';
|
|
2
2
|
export * from './options';
|
|
3
3
|
export * from './handlers';
|
|
4
|
-
|
|
4
|
+
export * from './expressions';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3F1ZXJ5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vb3B0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2hhbmRsZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vZXhwcmVzc2lvbnMnO1xuIl19
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { QueryOption } from '../../types';
|
|
2
2
|
import { Objects, Types } from '../../utils';
|
|
3
3
|
import { buildPathAndQuery, raw, } from './builder';
|
|
4
|
+
import { RenderableFactory, } from './expressions';
|
|
4
5
|
import { ODataQueryOptionHandler } from './handlers';
|
|
5
6
|
export class ODataQueryOptions {
|
|
6
7
|
constructor(values) {
|
|
7
|
-
|
|
8
|
-
values
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
if (!(values instanceof Map)) {
|
|
9
|
+
const entries = Object.entries(values || {}).map(([key, value]) => [
|
|
10
|
+
key,
|
|
11
|
+
RenderableFactory(value),
|
|
12
|
+
]);
|
|
13
|
+
values = new Map(entries);
|
|
14
|
+
}
|
|
15
|
+
this.values = values;
|
|
11
16
|
}
|
|
12
17
|
// Params
|
|
13
|
-
pathAndParams({ escape, parser, } = {}) {
|
|
18
|
+
pathAndParams({ escape, parser, options, } = {}) {
|
|
14
19
|
let aliases = [];
|
|
15
|
-
let
|
|
20
|
+
let queryOptions = [
|
|
16
21
|
QueryOption.select,
|
|
17
22
|
QueryOption.filter,
|
|
18
23
|
QueryOption.search,
|
|
@@ -35,13 +40,18 @@ export class ODataQueryOptions {
|
|
|
35
40
|
value.some((v) => Types.rawType(v).endsWith('Expression')))) {
|
|
36
41
|
value = Types.isArray(value)
|
|
37
42
|
? value.map((v) => Types.rawType(v).endsWith('Expression')
|
|
38
|
-
? raw(v.render({ aliases, escape, parser }))
|
|
43
|
+
? raw(v.render({ aliases, escape, parser, options }))
|
|
39
44
|
: v)
|
|
40
|
-
: raw(value.render({
|
|
45
|
+
: raw(value.render({
|
|
46
|
+
aliases,
|
|
47
|
+
escape,
|
|
48
|
+
parser,
|
|
49
|
+
options,
|
|
50
|
+
}));
|
|
41
51
|
}
|
|
42
52
|
return Object.assign(acc, { [key]: value });
|
|
43
53
|
}, {});
|
|
44
|
-
return buildPathAndQuery({ ...
|
|
54
|
+
return buildPathAndQuery({ ...queryOptions, aliases, escape });
|
|
45
55
|
}
|
|
46
56
|
toString({ escape, parser, } = {}) {
|
|
47
57
|
const [path, params] = this.pathAndParams({ escape, parser });
|
|
@@ -51,10 +61,10 @@ export class ODataQueryOptions {
|
|
|
51
61
|
.map(([key, value]) => `${key}=${value}`)
|
|
52
62
|
.join('&'));
|
|
53
63
|
}
|
|
54
|
-
|
|
64
|
+
toJson() {
|
|
55
65
|
return [...this.values.keys()].reduce((acc, key) => {
|
|
56
66
|
let value = this.values.get(key);
|
|
57
|
-
value = '
|
|
67
|
+
value = 'toJson' in value ? value.toJson() : value;
|
|
58
68
|
return Object.assign(acc, { [key]: value });
|
|
59
69
|
}, {});
|
|
60
70
|
}
|
|
@@ -112,4 +122,4 @@ export class ODataQueryOptions {
|
|
|
112
122
|
this.values.clear();
|
|
113
123
|
}
|
|
114
124
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcXVlcnkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFDTCxpQkFBaUIsRUFLakIsR0FBRyxHQUdKLE1BQU0sV0FBVyxDQUFDO0FBVW5CLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQWtCckQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUFZLE1BQXdEO1FBQ2xFLElBQUksQ0FBQyxNQUFNO1lBQ1QsTUFBTSxZQUFZLEdBQUc7Z0JBQ25CLENBQUMsQ0FBQyxNQUFNO2dCQUNSLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQThCLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsU0FBUztJQUNULGFBQWEsQ0FBQyxFQUNaLE1BQU0sRUFDTixNQUFNLE1BQ3NDLEVBQUU7UUFJOUMsSUFBSSxPQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLE9BQU8sR0FBRztZQUNaLFdBQVcsQ0FBQyxNQUFNO1lBQ2xCLFdBQVcsQ0FBQyxNQUFNO1lBQ2xCLFdBQVcsQ0FBQyxNQUFNO1lBQ2xCLFdBQVcsQ0FBQyxPQUFPO1lBQ25CLFdBQVcsQ0FBQyxTQUFTO1lBQ3JCLFdBQVcsQ0FBQyxPQUFPO1lBQ25CLFdBQVcsQ0FBQyxHQUFHO1lBQ2YsV0FBVyxDQUFDLElBQUk7WUFDaEIsV0FBVyxDQUFDLFNBQVM7WUFDckIsV0FBVyxDQUFDLE1BQU07WUFDbEIsV0FBVyxDQUFDLE1BQU07WUFDbEIsV0FBVyxDQUFD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QUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNyQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFHLElBQW1CO1FBQ3pCLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNyQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7SUFDUixLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZXIsIFF1ZXJ5T3B0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1xuICBidWlsZFBhdGhBbmRRdWVyeSxcbiAgRXhwYW5kLFxuICBGaWx0ZXIsXG4gIE9yZGVyQnksXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbiAgcmF3LFxuICBTZWxlY3QsXG4gIFRyYW5zZm9ybSxcbn0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7XG4gIENvbXB1dGVFeHByZXNzaW9uLFxuICBFeHByZXNzaW9uLFxuICBGaWx0ZXJFeHByZXNzaW9uLFxuICBPcmRlckJ5RXhwcmVzc2lvbixcbiAgU2VhcmNoRXhwcmVzc2lvbixcbn0gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBFeHBhbmRFeHByZXNzaW9uIH0gZnJvbSAnLi9leHByZXNzaW9ucy9leHBhbmQnO1xuaW1wb3J0IHsgU2VsZWN0RXhwcmVzc2lvbiB9IGZyb20gJy4vZXhwcmVzc2lvbnMvc2VsZWN0JztcbmltcG9ydCB7IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVycyc7XG5cbmV4cG9ydCB0eXBlIE9EYXRhUXVlcnlBcmd1bWVudHM8VD4gPSB7XG4gIFtRdWVyeU9wdGlvbi5zZWxlY3RdPzogU2VsZWN0PFQ+IHwgU2VsZWN0RXhwcmVzc2lvbjxUPiB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi5leHBhbmRdPzogRXhwYW5kPFQ+IHwgRXhwYW5kRXhwcmVzc2lvbjxUPiB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi5jb21wdXRlXT86IHN0cmluZyB8IENvbXB1dGVFeHByZXNzaW9uPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLmZpbHRlcl0/OiBGaWx0ZXI8VD4gfCBGaWx0ZXJFeHByZXNzaW9uPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLnNlYXJjaF0/OiBzdHJpbmcgfCBTZWFyY2hFeHByZXNzaW9uPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLnRyYW5zZm9ybV0/OiBUcmFuc2Zvcm08VD4gfCBudWxsO1xuICBbUXVlcnlPcHRpb24ub3JkZXJCeV0/OiBPcmRlckJ5PFQ+IHwgT3JkZXJCeUV4cHJlc3Npb248VD4gfCBudWxsO1xuICBbUXVlcnlPcHRpb24udG9wXT86IG51bWJlciB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi5za2lwXT86IG51bWJlciB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi5za2lwdG9rZW5dPzogc3RyaW5nIHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLmZvcm1hdF0/OiBzdHJpbmcgfCBudWxsO1xuICBbUXVlcnlPcHRpb24ubGV2ZWxzXT86IG51bWJlciB8ICdtYXgnIHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLmNvdW50XT86IGJvb2xlYW4gfCBudWxsO1xufTtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUXVlcnlPcHRpb25zPFQ+IHtcbiAgdmFsdWVzOiBNYXA8UXVlcnlPcHRpb24sIGFueT47XG5cbiAgY29uc3RydWN0b3IodmFsdWVzPzogTWFwPFF1ZXJ5T3B0aW9uLCBhbnk+IHwgeyBbbmFtZTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLnZhbHVlcyA9XG4gICAgICB2YWx1ZXMgaW5zdGFuY2VvZiBNYXBcbiAgICAgICAgPyB2YWx1ZXNcbiAgICAgICAgOiBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHZhbHVlcyB8fCB7fSkgYXMgQXJyYXk8W1F1ZXJ5T3B0aW9uLCBhbnldPik7XG4gIH1cblxuICAvLyBQYXJhbXNcbiAgcGF0aEFuZFBhcmFtcyh7XG4gICAgZXNjYXBlLFxuICAgIHBhcnNlcixcbiAgfTogeyBlc2NhcGU/OiBib29sZWFuOyBwYXJzZXI/OiBQYXJzZXI8VD4gfSA9IHt9KTogW1xuICAgIHN0cmluZyxcbiAgICB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSxcbiAgXSB7XG4gICAgbGV0IGFsaWFzZXM6IFF1ZXJ5Q3VzdG9tVHlwZVtdID0gW107XG4gICAgbGV0IG9wdGlvbnMgPSBbXG4gICAgICBRdWVyeU9wdGlvbi5zZWxlY3QsXG4gICAgICBRdWVyeU9wdGlvbi5maWx0ZXIsXG4gICAgICBRdWVyeU9wdGlvbi5zZWFyY2gsXG4gICAgICBRdWVyeU9wdGlvbi5jb21wdXRlLFxuICAgICAgUXVlcnlPcHRpb24udHJhbnNmb3JtLFxuICAgICAgUXVlcnlPcHRpb24ub3JkZXJCeSxcbiAgICAgIFF1ZXJ5T3B0aW9uLnRvcCxcbiAgICAgIFF1ZXJ5T3B0aW9uLnNraXAsXG4gICAgICBRdWVyeU9wdGlvbi5za2lwdG9rZW4sXG4gICAgICBRdWVyeU9wdGlvbi5leHBhbmQsXG4gICAgICBRdWVyeU9wdGlvbi5mb3JtYXQsXG4gICAgICBRdWVyeU9wdGlvbi5sZXZlbHMsXG4gICAgICBRdWVyeU9wdGlvbi5jb3VudCxcbiAgICBdXG4gICAgICAuZmlsdGVyKChrZXkpID0+ICFUeXBlcy5pc0VtcHR5KHRoaXMudmFsdWVzLmdldChrZXkpKSlcbiAgICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWVzLmdldChrZXkpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgVHlwZXMucmF3VHlwZSh2YWx1ZSkuZW5kc1dpdGgoJ0V4cHJlc3Npb24nKSB8fFxuICAgICAgICAgIChUeXBlcy5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgICAgICAgdmFsdWUuc29tZSgodjogYW55KSA9PiBUeXBlcy5yYXdUeXBlKHYpLmVuZHNXaXRoKCdFeHByZXNzaW9uJykpKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZSA9IFR5cGVzLmlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICA/IHZhbHVlLm1hcCgodjogRXhwcmVzc2lvbjxUPikgPT5cbiAgICAgICAgICAgICAgICBUeXBlcy5yYXdUeXBlKHYpLmVuZHNXaXRoKCdFeHByZXNzaW9uJylcbiAgICAgICAgICAgICAgICAgID8gcmF3KHYucmVuZGVyKHsgYWxpYXNlcywgZXNjYXBlLCBwYXJzZXIgfSkpXG4gICAgICAgICAgICAgICAgICA6IHYsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogcmF3KCh2YWx1ZSBhcyBFeHByZXNzaW9uPFQ+KS5yZW5kZXIoeyBhbGlhc2VzLCBlc2NhcGUsIHBhcnNlciB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICAgIH0sIHt9KTtcbiAgICByZXR1cm4gYnVpbGRQYXRoQW5kUXVlcnk8YW55Pih7IC4uLm9wdGlvbnMsIGFsaWFzZXMsIGVzY2FwZSB9KTtcbiAgfVxuXG4gIHRvU3RyaW5nKHtcbiAgICBlc2NhcGUsXG4gICAgcGFyc2VyLFxuICB9OiB7IGVzY2FwZT86IGJvb2xlYW47IHBhcnNlcj86IFBhcnNlcjxUPiB9ID0ge30pOiBzdHJpbmcge1xuICAgIGNvbnN0IFtwYXRoLCBwYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKHsgZXNjYXBlLCBwYXJzZXIgfSk7XG4gICAgcmV0dXJuIChcbiAgICAgIHBhdGggK1xuICAgICAgT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgICAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+ICFUeXBlcy5pc0VtcHR5KHZhbHVlKSlcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YClcbiAgICAgICAgLmpvaW4oJyYnKVxuICAgICk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnZhbHVlcy5rZXlzKCldLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWVzLmdldChrZXkpO1xuICAgICAgdmFsdWUgPSAndG9KU09OJyBpbiB2YWx1ZSA/IHZhbHVlLnRvSlNPTigpIDogdmFsdWU7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06IHZhbHVlIH0pO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHRvUXVlcnlBcmd1bWVudHMoKTogT0RhdGFRdWVyeUFyZ3VtZW50czxUPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLnNlbGVjdCkgfHwgbnVsbCxcbiAgICAgIGV4cGFuZDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLmV4cGFuZCkgfHwgbnVsbCxcbiAgICAgIHRyYW5zZm9ybTogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLnRyYW5zZm9ybSkgfHwgbnVsbCxcbiAgICAgIGNvbXB1dGU6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbi5jb21wdXRlKSB8fCBudWxsLFxuICAgICAgc2VhcmNoOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb24uc2VhcmNoKSB8fCBudWxsLFxuICAgICAgZmlsdGVyOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb24uZmlsdGVyKSB8fCBudWxsLFxuICAgICAgb3JkZXJCeTogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLm9yZGVyQnkpIHx8IG51bGwsXG4gICAgICB0b3A6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbi50b3ApIHx8IG51bGwsXG4gICAgICBza2lwOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb24uc2tpcCkgfHwgbnVsbCxcbiAgICAgIHNraXB0b2tlbjogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLnNraXB0b2tlbikgfHwgbnVsbCxcbiAgICAgIGxldmVsczogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLmxldmVscykgfHwgbnVsbCxcbiAgICAgIGNvdW50OiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb24uY291bnQpIHx8IG51bGwsXG4gICAgfSBhcyBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+O1xuICB9XG5cbiAgY2xvbmU8Tz4oKSB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVF1ZXJ5T3B0aW9uczxPPihPYmplY3RzLmNsb25lKHRoaXMudmFsdWVzKSk7XG4gIH1cblxuICAvLyBTZXQgUmVuZGVyYWJsZVxuICBleHByZXNzaW9uKGtleTogUXVlcnlPcHRpb24sIGV4cD86IEV4cHJlc3Npb248VD4pIHtcbiAgICBpZiAoZXhwICE9PSB1bmRlZmluZWQpIHRoaXMudmFsdWVzLnNldChrZXksIGV4cCk7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmdldChrZXkpO1xuICB9XG5cbiAgLy8gT3B0aW9uIEhhbmRsZXJcbiAgb3B0aW9uPE8+KGtleTogUXVlcnlPcHRpb24sIG9wdHM/OiBPKSB7XG4gICAgaWYgKG9wdHMgIT09IHVuZGVmaW5lZCkgdGhpcy52YWx1ZXMuc2V0KGtleSwgb3B0cyk7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxPPih0aGlzLnZhbHVlcywga2V5KTtcbiAgfVxuXG4gIC8vIFF1ZXJ5IE9wdGlvbnMgdG9vbHNcbiAgaGFzKGtleTogUXVlcnlPcHRpb24pIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuaGFzKGtleSk7XG4gIH1cblxuICByZW1vdmUoLi4ua2V5czogUXVlcnlPcHRpb25bXSkge1xuICAgIFsuLi50aGlzLnZhbHVlcy5rZXlzKCldXG4gICAgICAuZmlsdGVyKChrKSA9PiBrZXlzLmluZGV4T2YoaykgIT09IC0xKVxuICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlcy5kZWxldGUoa2V5KTtcbiAgICAgIH0pO1xuICB9XG5cbiAga2VlcCguLi5rZXlzOiBRdWVyeU9wdGlvbltdKSB7XG4gICAgWy4uLnRoaXMudmFsdWVzLmtleXMoKV1cbiAgICAgIC5maWx0ZXIoKGspID0+IGtleXMuaW5kZXhPZihrKSA9PT0gLTEpXG4gICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHRoaXMudmFsdWVzLmRlbGV0ZShrZXkpO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBDbGVhclxuICBjbGVhcigpIHtcbiAgICB0aGlzLnZhbHVlcy5jbGVhcigpO1xuICB9XG59XG4iXX0=
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcXVlcnkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXlCLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsaUJBQWlCLEVBS2pCLEdBQUcsR0FHSixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBS0wsaUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQWtCckQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUFZLE1BQXdEO1FBQ2xFLElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBRTtZQUM1QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2pFLEdBQUc7Z0JBQ0gsaUJBQWlCLENBQUMsS0FBSyxDQUFDO2FBQ3pCLENBQXlCLENBQUM7WUFDM0IsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUErQixDQUFDO0lBQ2hELENBQUM7SUFFRCxTQUFTO0lBQ1QsYUFBYSxDQUFDLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixPQUFPLE1BQzhELEVBQUU7UUFJdkUsSUFBSSxPQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFlBQVksR0FBRztZQUNqQixXQUFXLENBQUMsTUFBTTtZ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MUQsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixHQUFHLENBQUMsR0FBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsSUFBbUI7UUFDM0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDcEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3JDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQUcsSUFBbUI7UUFDekIsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDcEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3JDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtJQUNSLEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlciwgUGFyc2VyT3B0aW9ucywgUXVlcnlPcHRpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIGJ1aWxkUGF0aEFuZFF1ZXJ5LFxuICBFeHBhbmQsXG4gIEZpbHRlcixcbiAgT3JkZXJCeSxcbiAgUXVlcnlDdXN0b21UeXBlLFxuICByYXcsXG4gIFNlbGVjdCxcbiAgVHJhbnNmb3JtLFxufSBmcm9tICcuL2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgQ29tcHV0ZUV4cHJlc3Npb24sXG4gIEV4cHJlc3Npb24sXG4gIEZpbHRlckV4cHJlc3Npb24sXG4gIE9yZGVyQnlFeHByZXNzaW9uLFxuICBSZW5kZXJhYmxlRmFjdG9yeSxcbiAgU2VhcmNoRXhwcmVzc2lvbixcbn0gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb3VudEV4cHJlc3Npb24gfSBmcm9tICcuL2V4cHJlc3Npb25zL2NvdW50JztcbmltcG9ydCB7IEV4cGFuZEV4cHJlc3Npb24gfSBmcm9tICcuL2V4cHJlc3Npb25zL2V4cGFuZCc7XG5pbXBvcnQgeyBTZWxlY3RFeHByZXNzaW9uIH0gZnJvbSAnLi9leHByZXNzaW9ucy9zZWxlY3QnO1xuaW1wb3J0IHsgT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXIgfSBmcm9tICcuL2hhbmRsZXJzJztcblxuZXhwb3J0IHR5cGUgT0RhdGFRdWVyeUFyZ3VtZW50czxUPiA9IHtcbiAgW1F1ZXJ5T3B0aW9uLnNlbGVjdF0/OiBTZWxlY3Q8VD4gfCBTZWxlY3RFeHByZXNzaW9uPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLmV4cGFuZF0/OiBFeHBhbmQ8VD4gfCBFeHBhbmRFeHByZXNzaW9uPFQ+IHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLmNvbXB1dGVdPzogc3RyaW5nIHwgQ29tcHV0ZUV4cHJlc3Npb248VD4gfCBudWxsO1xuICBbUXVlcnlPcHRpb24uZmlsdGVyXT86IEZpbHRlcjxUPiB8IEZpbHRlckV4cHJlc3Npb248VD4gfCBudWxsO1xuICBbUXVlcnlPcHRpb24uc2VhcmNoXT86IHN0cmluZyB8IFNlYXJjaEV4cHJlc3Npb248VD4gfCBudWxsO1xuICBbUXVlcnlPcHRpb24udHJhbnNmb3JtXT86IFRyYW5zZm9ybTxUPiB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi5vcmRlckJ5XT86IE9yZGVyQnk8VD4gfCBPcmRlckJ5RXhwcmVzc2lvbjxUPiB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi50b3BdPzogbnVtYmVyIHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLnNraXBdPzogbnVtYmVyIHwgbnVsbDtcbiAgW1F1ZXJ5T3B0aW9uLnNraXB0b2tlbl0/OiBzdHJpbmcgfCBudWxsO1xuICBbUXVlcnlPcHRpb24uZm9ybWF0XT86IHN0cmluZyB8IG51bGw7XG4gIFtRdWVyeU9wdGlvbi5sZXZlbHNdPzogbnVtYmVyIHwgJ21heCcgfCBudWxsO1xuICBbUXVlcnlPcHRpb24uY291bnRdPzogYm9vbGVhbiB8IG51bGw7XG59O1xuXG5leHBvcnQgY2xhc3MgT0RhdGFRdWVyeU9wdGlvbnM8VD4ge1xuICB2YWx1ZXM6IE1hcDxRdWVyeU9wdGlvbiwgYW55PjtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXA8UXVlcnlPcHRpb24sIGFueT4gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGlmICghKHZhbHVlcyBpbnN0YW5jZW9mIE1hcCkpIHtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2YWx1ZXMgfHwge30pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbXG4gICAgICAgIGtleSxcbiAgICAgICAgUmVuZGVyYWJsZUZhY3RvcnkodmFsdWUpLFxuICAgICAgXSkgYXMgW1F1ZXJ5T3B0aW9uLCBhbnldW107XG4gICAgICB2YWx1ZXMgPSBuZXcgTWFwKGVudHJpZXMpO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcyBhcyBNYXA8UXVlcnlPcHRpb24sIGFueT47XG4gIH1cblxuICAvLyBQYXJhbXNcbiAgcGF0aEFuZFBhcmFtcyh7XG4gICAgZXNjYXBlLFxuICAgIHBhcnNlcixcbiAgICBvcHRpb25zLFxuICB9OiB7IGVzY2FwZT86IGJvb2xlYW47IHBhcnNlcj86IFBhcnNlcjxUPjsgb3B0aW9ucz86IFBhcnNlck9wdGlvbnMgfSA9IHt9KTogW1xuICAgIHN0cmluZyxcbiAgICB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSxcbiAgXSB7XG4gICAgbGV0IGFsaWFzZXM6IFF1ZXJ5Q3VzdG9tVHlwZVtdID0gW107XG4gICAgbGV0IHF1ZXJ5T3B0aW9ucyA9IFtcbiAgICAgIFF1ZXJ5T3B0aW9uLnNlbGVjdCxcbiAgICAgIFF1ZXJ5T3B0aW9uLmZpbHRlcixcbiAgICAgIFF1ZXJ5T3B0aW9uLnNlYXJjaCxcbiAgICAgIFF1ZXJ5T3B0aW9uLmNvbXB1dGUsXG4gICAgICBRdWVyeU9wdGlvbi50cmFuc2Zvcm0sXG4gICAgICBRdWVyeU9wdGlvbi5vcmRlckJ5LFxuICAgICAgUXVlcnlPcHRpb24udG9wLFxuICAgICAgUXVlcnlPcHRpb24uc2tpcCxcbiAgICAgIFF1ZXJ5T3B0aW9uLnNraXB0b2tlbixcbiAgICAgIFF1ZXJ5T3B0aW9uLmV4cGFuZCxcbiAgICAgIFF1ZXJ5T3B0aW9uLmZvcm1hdCxcbiAgICAgIFF1ZXJ5T3B0aW9uLmxldmVscyxcbiAgICAgIFF1ZXJ5T3B0aW9uLmNvdW50LFxuICAgIF1cbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gIVR5cGVzLmlzRW1wdHkodGhpcy52YWx1ZXMuZ2V0KGtleSkpKVxuICAgICAgLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBUeXBlcy5yYXdUeXBlKHZhbHVlKS5lbmRzV2l0aCgnRXhwcmVzc2lvbicpIHx8XG4gICAgICAgICAgKFR5cGVzLmlzQXJyYXkodmFsdWUpICYmXG4gICAgICAgICAgICB2YWx1ZS5zb21lKCh2OiBhbnkpID0+IFR5cGVzLnJhd1R5cGUodikuZW5kc1dpdGgoJ0V4cHJlc3Npb24nKSkpXG4gICAgICAgICkge1xuICAgICAgICAgIHZhbHVlID0gVHlwZXMuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgID8gdmFsdWUubWFwKCh2OiBFeHByZXNzaW9uPFQ+KSA9PlxuICAgICAgICAgICAgICAgIFR5cGVzLnJhd1R5cGUodikuZW5kc1dpdGgoJ0V4cHJlc3Npb24nKVxuICAgICAgICAgICAgICAgICAgPyByYXcodi5yZW5kZXIoeyBhbGlhc2VzLCBlc2NhcGUsIHBhcnNlciwgb3B0aW9ucyB9KSlcbiAgICAgICAgICAgICAgICAgIDogdixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiByYXcoXG4gICAgICAgICAgICAgICAgKHZhbHVlIGFzIEV4cHJlc3Npb248VD4pLnJlbmRlcih7XG4gICAgICAgICAgICAgICAgICBhbGlhc2VzLFxuICAgICAgICAgICAgICAgICAgZXNjYXBlLFxuICAgICAgICAgICAgICAgICAgcGFyc2VyLFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06IHZhbHVlIH0pO1xuICAgICAgfSwge30pO1xuICAgIHJldHVybiBidWlsZFBhdGhBbmRRdWVyeTxhbnk+KHsgLi4ucXVlcnlPcHRpb25zLCBhbGlhc2VzLCBlc2NhcGUgfSk7XG4gIH1cblxuICB0b1N0cmluZyh7XG4gICAgZXNjYXBlLFxuICAgIHBhcnNlcixcbiAgfTogeyBlc2NhcGU/OiBib29sZWFuOyBwYXJzZXI/OiBQYXJzZXI8VD4gfSA9IHt9KTogc3RyaW5nIHtcbiAgICBjb25zdCBbcGF0aCwgcGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcyh7IGVzY2FwZSwgcGFyc2VyIH0pO1xuICAgIHJldHVybiAoXG4gICAgICBwYXRoICtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtcylcbiAgICAgICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiAhVHlwZXMuaXNFbXB0eSh2YWx1ZSkpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApXG4gICAgICAgIC5qb2luKCcmJylcbiAgICApO1xuICB9XG5cbiAgdG9Kc29uKCkge1xuICAgIHJldHVybiBbLi4udGhpcy52YWx1ZXMua2V5cygpXS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLnZhbHVlcy5nZXQoa2V5KTtcbiAgICAgIHZhbHVlID0gJ3RvSnNvbicgaW4gdmFsdWUgPyB2YWx1ZS50b0pzb24oKSA6IHZhbHVlO1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICB9LCB7fSk7XG4gIH1cblxuICB0b1F1ZXJ5QXJndW1lbnRzKCk6IE9EYXRhUXVlcnlBcmd1bWVudHM8VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3Q6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbi5zZWxlY3QpIHx8IG51bGwsXG4gICAgICBleHBhbmQ6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbi5leHBhbmQpIHx8IG51bGwsXG4gICAgICB0cmFuc2Zvcm06IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbi50cmFuc2Zvcm0pIHx8IG51bGwsXG4gICAgICBjb21wdXRlOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb24uY29tcHV0ZSkgfHwgbnVsbCxcbiAgICAgIHNlYXJjaDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLnNlYXJjaCkgfHwgbnVsbCxcbiAgICAgIGZpbHRlcjogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLmZpbHRlcikgfHwgbnVsbCxcbiAgICAgIG9yZGVyQnk6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbi5vcmRlckJ5KSB8fCBudWxsLFxuICAgICAgdG9wOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb24udG9wKSB8fCBudWxsLFxuICAgICAgc2tpcDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLnNraXApIHx8IG51bGwsXG4gICAgICBza2lwdG9rZW46IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbi5za2lwdG9rZW4pIHx8IG51bGwsXG4gICAgICBsZXZlbHM6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbi5sZXZlbHMpIHx8IG51bGwsXG4gICAgICBjb3VudDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uLmNvdW50KSB8fCBudWxsLFxuICAgIH0gYXMgT0RhdGFRdWVyeUFyZ3VtZW50czxUPjtcbiAgfVxuXG4gIGNsb25lPE8+KCkge1xuICAgIHJldHVybiBuZXcgT0RhdGFRdWVyeU9wdGlvbnM8Tz4oT2JqZWN0cy5jbG9uZSh0aGlzLnZhbHVlcykpO1xuICB9XG5cbiAgLy8gU2V0IFJlbmRlcmFibGVcbiAgZXhwcmVzc2lvbihrZXk6IFF1ZXJ5T3B0aW9uLCBleHA/OiBFeHByZXNzaW9uPFQ+KSB7XG4gICAgaWYgKGV4cCAhPT0gdW5kZWZpbmVkKSB0aGlzLnZhbHVlcy5zZXQoa2V5LCBleHApO1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5nZXQoa2V5KTtcbiAgfVxuXG4gIC8vIE9wdGlvbiBIYW5kbGVyXG4gIG9wdGlvbjxPPihrZXk6IFF1ZXJ5T3B0aW9uLCBvcHRzPzogTykge1xuICAgIGlmIChvcHRzICE9PSB1bmRlZmluZWQpIHRoaXMudmFsdWVzLnNldChrZXksIG9wdHMpO1xuICAgIHJldHVybiBuZXcgT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8Tz4odGhpcy52YWx1ZXMsIGtleSk7XG4gIH1cblxuICAvLyBRdWVyeSBPcHRpb25zIHRvb2xzXG4gIGhhcyhrZXk6IFF1ZXJ5T3B0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmhhcyhrZXkpO1xuICB9XG5cbiAgcmVtb3ZlKC4uLmtleXM6IFF1ZXJ5T3B0aW9uW10pIHtcbiAgICBbLi4udGhpcy52YWx1ZXMua2V5cygpXVxuICAgICAgLmZpbHRlcigoaykgPT4ga2V5cy5pbmRleE9mKGspICE9PSAtMSlcbiAgICAgIC5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZXMuZGVsZXRlKGtleSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGtlZXAoLi4ua2V5czogUXVlcnlPcHRpb25bXSkge1xuICAgIFsuLi50aGlzLnZhbHVlcy5rZXlzKCldXG4gICAgICAuZmlsdGVyKChrKSA9PiBrZXlzLmluZGV4T2YoaykgPT09IC0xKVxuICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlcy5kZWxldGUoa2V5KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gQ2xlYXJcbiAgY2xlYXIoKSB7XG4gICAgdGhpcy52YWx1ZXMuY2xlYXIoKTtcbiAgfVxufVxuIl19
|
|
@@ -13,7 +13,7 @@ export class ODataRequest {
|
|
|
13
13
|
// The Body
|
|
14
14
|
this._body = init.body !== undefined ? init.body : null;
|
|
15
15
|
if (this._body !== null)
|
|
16
|
-
this._body = this.resource.serialize(this._body);
|
|
16
|
+
this._body = this.resource.serialize(this._body, init.parserOptions);
|
|
17
17
|
this.withCredentials =
|
|
18
18
|
init.withCredentials === undefined
|
|
19
19
|
? this.api.options.withCredentials
|
|
@@ -24,7 +24,7 @@ export class ODataRequest {
|
|
|
24
24
|
...(init.bodyQueryOptions || []),
|
|
25
25
|
];
|
|
26
26
|
// The Path and Params from resource
|
|
27
|
-
const [resourcePath, resourceParams] = this.resource.pathAndParams();
|
|
27
|
+
const [resourcePath, resourceParams] = this.resource.pathAndParams(init.parserOptions);
|
|
28
28
|
this._path = resourcePath;
|
|
29
29
|
//#region Headers
|
|
30
30
|
const customHeaders = {};
|
|
@@ -128,6 +128,7 @@ export class ODataRequest {
|
|
|
128
128
|
reportProgress: options.reportProgress,
|
|
129
129
|
responseType: options.responseType,
|
|
130
130
|
fetchPolicy: options.fetchPolicy,
|
|
131
|
+
parserOptions: options.parserOptions,
|
|
131
132
|
withCredentials: options.withCredentials,
|
|
132
133
|
bodyQueryOptions: options.bodyQueryOptions,
|
|
133
134
|
});
|
|
@@ -192,4 +193,4 @@ export class ODataRequest {
|
|
|
192
193
|
return ['PUT', 'PATCH', 'POST', 'DELETE'].indexOf(this._method) !== -1;
|
|
193
194
|
}
|
|
194
195
|
}
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXZDLE1BQU0sT0FBTyxZQUFZO0lBNkJ2QixZQUFZLElBb0NYO1FBQ0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU5QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFNUIsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUV2QyxXQUFXO1FBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJO1lBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FB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QyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDb250ZXh0LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gICRCQVRDSCxcbiAgJFFVRVJZLFxuICBBQ0NFUFQsXG4gIElGX01BVENIX0hFQURFUixcbiAgSUZfTk9ORV9NQVRDSF9IRUFERVIsXG4gIFBSRUZFUixcbiAgVEVYVF9QTEFJTixcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFF1ZXJ5T3B0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSHR0cCwgVHlwZXMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZSc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVxdWVzdDxUPiB7XG4gIHJlYWRvbmx5IGFwaTogT0RhdGFBcGk7XG4gIHJlYWRvbmx5IG9ic2VydmU6ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgcmVhZG9ubHkgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICByZWFkb25seSByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGJvZHlRdWVyeU9wdGlvbnM6IFF1ZXJ5T3B0aW9uW107XG4gIHJlYWRvbmx5IGZldGNoUG9saWN5OlxuICAgIHwgJ2NhY2hlLWZpcnN0J1xuICAgIHwgJ2NhY2hlLWFuZC1uZXR3b3JrJ1xuICAgIHwgJ25ldHdvcmstb25seSdcbiAgICB8ICduby1jYWNoZSdcbiAgICB8ICdjYWNoZS1vbmx5JztcbiAgcmVhZG9ubHkgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlVHlwZT86XG4gICAgfCAnYXJyYXlidWZmZXInXG4gICAgfCAnYmxvYidcbiAgICB8ICdqc29uJ1xuICAgIHwgJ3RleHQnXG4gICAgfCAndmFsdWUnXG4gICAgfCAncHJvcGVydHknXG4gICAgfCAnZW50aXR5J1xuICAgIHwgJ2VudGl0aWVzJztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0aG9kOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JvZHk6IGFueSB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlcnM6IEh0dHBIZWFkZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbXM6IEh0dHBQYXJhbXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhdGg6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihpbml0OiB7XG4gICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgYXBpOiBPRGF0YUFwaTtcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBib2R5OiBhbnk7XG4gICAgb2JzZXJ2ZTogJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICBldGFnPzogc3RyaW5nO1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcGFyYW1zPzpcbiAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgfCB7XG4gICAgICAgICAgW3BhcmFtOiBzdHJpbmddOlxuICAgICAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICB8IGJvb2xlYW5cbiAgICAgICAgICAgIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICAgICAgfTtcbiAgICByZXNwb25zZVR5cGU/OlxuICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICB8ICdibG9iJ1xuICAgICAgfCAnanNvbidcbiAgICAgIHwgJ3RleHQnXG4gICAgICB8ICd2YWx1ZSdcbiAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgfCAnZW50aXR5J1xuICAgICAgfCAnZW50aXRpZXMnO1xuICAgIGZldGNoUG9saWN5PzpcbiAgICAgIHwgJ2NhY2hlLWZpcnN0J1xuICAgICAgfCAnY2FjaGUtYW5kLW5ldHdvcmsnXG4gICAgICB8ICduZXR3b3JrLW9ubHknXG4gICAgICB8ICduby1jYWNoZSdcbiAgICAgIHwgJ2NhY2hlLW9ubHknO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uW107XG4gIH0pIHtcbiAgICB0aGlzLl9tZXRob2QgPSBpbml0Lm1ldGhvZDtcbiAgICB0aGlzLnJlc291cmNlID0gaW5pdC5yZXNvdXJjZTtcblxuICAgIHRoaXMuYXBpID0gaW5pdC5hcGk7XG4gICAgdGhpcy5yZXBvcnRQcm9ncmVzcyA9IGluaXQucmVwb3J0UHJvZ3Jlc3M7XG4gICAgdGhpcy5vYnNlcnZlID0gaW5pdC5vYnNlcnZlO1xuICAgIHRoaXMuY29udGV4dCA9IGluaXQuY29udGV4dDtcblxuICAgIC8vIFJlc3BvbnNlIFR5cGVcbiAgICB0aGlzLl9yZXNwb25zZVR5cGUgPSBpbml0LnJlc3BvbnNlVHlwZTtcblxuICAgIC8vIFRoZSBCb2R5XG4gICAgdGhpcy5fYm9keSA9IGluaXQuYm9keSAhPT0gdW5kZWZpbmVkID8gaW5pdC5ib2R5IDogbnVsbDtcbiAgICBpZiAodGhpcy5fYm9keSAhPT0gbnVsbCkgdGhpcy5fYm9keSA9IHRoaXMucmVzb3VyY2Uuc2VyaWFsaXplKHRoaXMuX2JvZHkpO1xuXG4gICAgdGhpcy53aXRoQ3JlZGVudGlhbHMgPVxuICAgICAgaW5pdC53aXRoQ3JlZGVudGlhbHMgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHRoaXMuYXBpLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzXG4gICAgICAgIDogaW5pdC53aXRoQ3JlZGVudGlhbHM7XG4gICAgdGhpcy5mZXRjaFBvbGljeSA9IGluaXQuZmV0Y2hQb2xpY3kgfHwgdGhpcy5hcGkub3B0aW9ucy5mZXRjaFBvbGljeTtcbiAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMgPSBbXG4gICAgICAuLi4odGhpcy5hcGkub3B0aW9ucy5ib2R5UXVlcnlPcHRpb25zIHx8IFtdKSxcbiAgICAgIC4uLihpbml0LmJvZHlRdWVyeU9wdGlvbnMgfHwgW10pLFxuICAgIF07XG5cbiAgICAvLyBUaGUgUGF0aCBhbmQgUGFyYW1zIGZyb20gcmVzb3VyY2VcbiAgICBjb25zdCBbcmVzb3VyY2VQYXRoLCByZXNvdXJjZVBhcmFtc10gPSB0aGlzLnJlc291cmNlLnBhdGhBbmRQYXJhbXMoKTtcbiAgICB0aGlzLl9wYXRoID0gcmVzb3VyY2VQYXRoO1xuXG4gICAgLy8jcmVnaW9uIEhlYWRlcnNcbiAgICBjb25zdCBjdXN0b21IZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9ID0ge307XG4gICAgaWYgKHR5cGVvZiBpbml0LmV0YWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuYXBpLm9wdGlvbnMuZXRhZy5pZk1hdGNoICYmXG4gICAgICAgIFsnUFVUJywgJ1BBVENIJywgJ0RFTEVURSddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICAgIClcbiAgICAgICAgY3VzdG9tSGVhZGVyc1tJRl9NQVRDSF9IRUFERVJdID0gaW5pdC5ldGFnO1xuICAgICAgZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuYXBpLm9wdGlvbnMuZXRhZy5pZk5vbmVNYXRjaCAmJlxuICAgICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICAgIClcbiAgICAgICAgY3VzdG9tSGVhZGVyc1tJRl9OT05FX01BVENIX0hFQURFUl0gPSBpbml0LmV0YWc7XG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXB0ID0gW107XG4gICAgLy8gTWV0YWRhdGFcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/Lm1ldGFkYXRhICE9PSB1bmRlZmluZWQpXG4gICAgICBhY2NlcHQucHVzaChgb2RhdGEubWV0YWRhdGE9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8ubWV0YWRhdGF9YCk7XG4gICAgLy8gSUVFRTc1NFxuICAgIGlmICh0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uaWVlZTc1NENvbXBhdGlibGUgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKFxuICAgICAgICBgSUVFRTc1NENvbXBhdGlibGU9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uaWVlZTc1NENvbXBhdGlibGV9YCxcbiAgICAgICk7XG4gICAgLy8gc3RyZWFtaW5nXG4gICAgaWYgKHRoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5zdHJlYW1pbmcgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKGBzdHJlYW1pbmc9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uc3RyZWFtaW5nfWApO1xuICAgIC8vIEV4cG9uZW50aWFsRGVjaW1hbHNcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmV4cG9uZW50aWFsRGVjaW1hbHMgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKFxuICAgICAgICBgRXhwb25lbnRpYWxEZWNpbWFscz0ke3RoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5leHBvbmVudGlhbERlY2ltYWxzfWAsXG4gICAgICApO1xuICAgIGlmIChhY2NlcHQubGVuZ3RoID4gMClcbiAgICAgIGN1c3RvbUhlYWRlcnNbQUNDRVBUXSA9IFtcbiAgICAgICAgYGFwcGxpY2F0aW9uL2pzb247JHthY2NlcHQuam9pbignOycpfWAsXG4gICAgICAgICd0ZXh0L3BsYWluJyxcbiAgICAgICAgJyovKicsXG4gICAgICBdO1xuXG4gICAgY29uc3QgcHJlZmVyID0gW107XG4gICAgLy8gUmV0dXJuXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LnJldHVybiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBbJ1BPU1QnLCAnUFVUJywgJ1BBVENIJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMVxuICAgIClcbiAgICAgIHByZWZlci5wdXNoKGByZXR1cm49JHt0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ucmV0dXJufWApO1xuICAgIC8vIE1heFBhZ2VTaXplXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/Lm1heFBhZ2VTaXplICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIFsnR0VUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMVxuICAgIClcbiAgICAgIHByZWZlci5wdXNoKGBvZGF0YS5tYXhwYWdlc2l6ZT0ke3RoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5tYXhQYWdlU2l6ZX1gKTtcbiAgICAvLyBBbm5vdGF0aW9uc1xuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5pbmNsdWRlQW5ub3RhdGlvbnMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goXG4gICAgICAgIGBvZGF0YS5pbmNsdWRlLWFubm90YXRpb25zPSR7dGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LmluY2x1ZGVBbm5vdGF0aW9uc31gLFxuICAgICAgKTtcbiAgICAvLyBPbWl0IE51bGwgVmFsdWVzXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/Lm9taXROdWxsVmFsdWVzID09PSB0cnVlICYmXG4gICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgb21pdC12YWx1ZXM9bnVsbHNgKTtcbiAgICAvLyBDb250aW51ZSBvbiBFcnJvclxuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5jb250aW51ZU9uRXJyb3IgPT09IHRydWUgJiZcbiAgICAgIFsnUE9TVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgb2RhdGEuY29udGludWUtb24tZXJyb3JgKTtcbiAgICBpZiAocHJlZmVyLmxlbmd0aCA+IDApIGN1c3RvbUhlYWRlcnNbUFJFRkVSXSA9IHByZWZlcjtcbiAgICB0aGlzLl9oZWFkZXJzID0gSHR0cC5tZXJnZUh0dHBIZWFkZXJzKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5oZWFkZXJzLFxuICAgICAgY3VzdG9tSGVhZGVycyxcbiAgICAgIGluaXQuaGVhZGVycyB8fCB7fSxcbiAgICApO1xuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIFBhcmFtc1xuICAgIGNvbnN0IGN1c3RvbVBhcmFtczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfSA9IHt9O1xuICAgIGlmIChcbiAgICAgIFsnUE9TVCcsICdQVVQnLCAnUEFUQ0gnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xICYmXG4gICAgICAnJHNlbGVjdCcgaW4gcmVzb3VyY2VQYXJhbXNcbiAgICApIHtcbiAgICAgIGN1c3RvbVBhcmFtc1snJHNlbGVjdCddID0gcmVzb3VyY2VQYXJhbXNbJyRzZWxlY3QnXTtcbiAgICB9XG4gICAgaWYgKFsnUE9TVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTEgJiYgJyRleHBhbmQnIGluIHJlc291cmNlUGFyYW1zKSB7XG4gICAgICBjdXN0b21QYXJhbXNbJyRleHBhbmQnXSA9IHJlc291cmNlUGFyYW1zWyckZXhwYW5kJ107XG4gICAgfVxuICAgIGlmIChbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTEpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oY3VzdG9tUGFyYW1zLCByZXNvdXJjZVBhcmFtcyk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zID0gSHR0cC5tZXJnZUh0dHBQYXJhbXMoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnBhcmFtcyxcbiAgICAgIGN1c3RvbVBhcmFtcyxcbiAgICAgIGluaXQucGFyYW1zIHx8IHt9LFxuICAgICk7XG5cbiAgICB0aGlzLl9wYXJhbXMgPVxuICAgICAgdGhpcy5fcmVzcG9uc2VUeXBlID09PSAnZW50aXR5J1xuICAgICAgICA/IEh0dHAud2l0aG91dEh0dHBQYXJhbXMocGFyYW1zLCBbXG4gICAgICAgICAgICAnJGZpbHRlcicsXG4gICAgICAgICAgICAnJG9yZGVyYnknLFxuICAgICAgICAgICAgJyRjb3VudCcsXG4gICAgICAgICAgICAnJHNraXAnLFxuICAgICAgICAgICAgJyR0b3AnLFxuICAgICAgICAgIF0pXG4gICAgICAgIDogcGFyYW1zO1xuICAgIC8vI2VuZHJlZ2lvblxuICB9XG5cbiAgc3RhdGljIGZhY3RvcnkoXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk/OiBhbnk7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uW107XG4gICAgfSxcbiAgKSB7XG4gICAgY29uc3QgYXBpT3B0aW9ucyA9IGFwaS5vcHRpb25zO1xuICAgIGxldCBwYXJhbXMgPSBvcHRpb25zLnBhcmFtcyB8fCB7fTtcbiAgICBpZiAob3B0aW9ucy53aXRoQ291bnQpIHtcbiAgICAgIHBhcmFtcyA9IEh0dHAubWVyZ2VIdHRwUGFyYW1zKHBhcmFtcywgYXBpT3B0aW9ucy5oZWxwZXIuY291bnRQYXJhbSgpKTtcbiAgICB9XG5cbiAgICBsZXQgZXRhZyA9IG9wdGlvbnMuZXRhZztcbiAgICBpZiAoZXRhZyA9PT0gdW5kZWZpbmVkICYmIFR5cGVzLmlzUGxhaW5PYmplY3Qob3B0aW9ucy5ib2R5KSkge1xuICAgICAgZXRhZyA9IGFwaU9wdGlvbnMuaGVscGVyLmV0YWcob3B0aW9ucy5ib2R5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE9EYXRhUmVxdWVzdCh7XG4gICAgICBtZXRob2QsXG4gICAgICBldGFnLFxuICAgICAgYXBpLFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBwYXJhbXMsXG4gICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgICBib2R5OiBvcHRpb25zLmJvZHksXG4gICAgICBvYnNlcnZlOiBvcHRpb25zLm9ic2VydmUsXG4gICAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gICAgICByZXBvcnRQcm9ncmVzczogb3B0aW9ucy5yZXBvcnRQcm9ncmVzcyxcbiAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUsXG4gICAgICBmZXRjaFBvbGljeTogb3B0aW9ucy5mZXRjaFBvbGljeSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICBib2R5UXVlcnlPcHRpb25zOiBvcHRpb25zLmJvZHlRdWVyeU9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgcmVzcG9uc2VUeXBlKCk6ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCcge1xuICAgIHJldHVybiB0aGlzLl9yZXNwb25zZVR5cGUgJiZcbiAgICAgIFsncHJvcGVydHknLCAnZW50aXR5JywgJ2VudGl0aWVzJ10uaW5kZXhPZih0aGlzLl9yZXNwb25zZVR5cGUpICE9PSAtMVxuICAgICAgPyAnanNvbidcbiAgICAgIDogdGhpcy5fcmVzcG9uc2VUeXBlID09PSAndmFsdWUnXG4gICAgICA/ICd0ZXh0J1xuICAgICAgOiA8J2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0Jz50aGlzLl9yZXNwb25zZVR5cGU7XG4gIH1cblxuICBnZXQgcGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpID8gYCR7dGhpcy5fcGF0aH0vJHskUVVFUll9YCA6IHRoaXMuX3BhdGg7XG4gIH1cblxuICBnZXQgbWV0aG9kKCkge1xuICAgIHJldHVybiB0aGlzLmlzUXVlcnlCb2R5KCkgPyAnUE9TVCcgOiB0aGlzLl9tZXRob2Q7XG4gIH1cblxuICBnZXQgYm9keSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpXG4gICAgICA/IEh0dHAuc3BsaXRIdHRwUGFyYW1zKFxuICAgICAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMubWFwKChuYW1lKSA9PiBgJCR7bmFtZX1gKSxcbiAgICAgICAgKVsxXS50b1N0cmluZygpXG4gICAgICA6IHRoaXMuX2JvZHk7XG4gIH1cblxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLmlzUXVlcnlCb2R5KClcbiAgICAgID8gSHR0cC5zcGxpdEh0dHBQYXJhbXMoXG4gICAgICAgICAgdGhpcy5fcGFyYW1zLFxuICAgICAgICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucy5tYXAoKG5hbWUpID0+IGAkJHtuYW1lfWApLFxuICAgICAgICApWzBdXG4gICAgICA6IHRoaXMuX3BhcmFtcztcbiAgfVxuXG4gIGdldCBoZWFkZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmlzUXVlcnlCb2R5KClcbiAgICAgID8gSHR0cC5tZXJnZUh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMsIHsgQ09OVEVOVF9UWVBFOiBURVhUX1BMQUlOIH0pXG4gICAgICA6IHRoaXMuX2hlYWRlcnM7XG4gIH1cblxuICBnZXQgcGF0aFdpdGhQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmtleXMoKS5sZW5ndGggPiAwXG4gICAgICA/IGAke3RoaXMucGF0aH0/JHt0aGlzLnBhcmFtc31gXG4gICAgICA6IHRoaXMucGF0aDtcbiAgfVxuXG4gIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7dGhpcy5wYXRofWA7XG4gIH1cblxuICBnZXQgdXJsV2l0aFBhcmFtcygpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5hcGkuc2VydmljZVJvb3RVcmx9JHt0aGlzLnBhdGhXaXRoUGFyYW1zfWA7XG4gIH1cblxuICBnZXQgY2FjaGVLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtcy5rZXlzKCkubGVuZ3RoID4gMFxuICAgICAgPyBgJHt0aGlzLl9wYXRofT8ke3RoaXMuX3BhcmFtc31gXG4gICAgICA6IHRoaXMuX3BhdGg7XG4gIH1cblxuICBpc1F1ZXJ5Qm9keSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fbWV0aG9kID09PSAnR0VUJyAmJlxuICAgICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucy5zb21lKChuYW1lKSA9PiB0aGlzLl9wYXJhbXMuaGFzKGAkJHtuYW1lfWApKVxuICAgICk7XG4gIH1cblxuICBpc0JhdGNoKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGguZW5kc1dpdGgoJEJBVENIKTtcbiAgfVxuXG4gIGlzRmV0Y2goKSB7XG4gICAgcmV0dXJuIFsnR0VUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMTtcbiAgfVxuXG4gIGlzTXV0YXRlKCkge1xuICAgIHJldHVybiBbJ1BVVCcsICdQQVRDSCcsICdQT1NUJywgJ0RFTEVURSddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTE7XG4gIH1cbn1cbiJdfQ==
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXZDLE1BQU0sT0FBTyxZQUFZO0lBNkJ2QixZQUFZLElBZ0NYO1FBQ0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU5QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFNUIsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUV2QyxXQUFXO1FBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtB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Q0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ29udGV4dCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPRGF0YUFwaSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQge1xuICAkQkFUQ0gsXG4gICRRVUVSWSxcbiAgQUNDRVBULFxuICBJRl9NQVRDSF9IRUFERVIsXG4gIElGX05PTkVfTUFUQ0hfSEVBREVSLFxuICBQUkVGRVIsXG4gIFRFWFRfUExBSU4sXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBGZXRjaFBvbGljeSwgUGFyc2VyT3B0aW9ucywgUXVlcnlPcHRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBIdHRwLCBUeXBlcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IE9EYXRhUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcbmltcG9ydCB7IE9EYXRhT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFSZXF1ZXN0PFQ+IHtcbiAgcmVhZG9ubHkgYXBpOiBPRGF0YUFwaTtcbiAgcmVhZG9ubHkgb2JzZXJ2ZTogJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICByZWFkb25seSBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gIHJlYWRvbmx5IHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYm9keVF1ZXJ5T3B0aW9uczogUXVlcnlPcHRpb25bXTtcbiAgcmVhZG9ubHkgZmV0Y2hQb2xpY3k6XG4gICAgfCAnY2FjaGUtZmlyc3QnXG4gICAgfCAnY2FjaGUtYW5kLW5ldHdvcmsnXG4gICAgfCAnbmV0d29yay1vbmx5J1xuICAgIHwgJ25vLWNhY2hlJ1xuICAgIHwgJ2NhY2hlLW9ubHknO1xuICByZWFkb25seSByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2VUeXBlPzpcbiAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICB8ICdibG9iJ1xuICAgIHwgJ2pzb24nXG4gICAgfCAndGV4dCdcbiAgICB8ICd2YWx1ZSdcbiAgICB8ICdwcm9wZXJ0eSdcbiAgICB8ICdlbnRpdHknXG4gICAgfCAnZW50aXRpZXMnO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRob2Q6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYm9keTogYW55IHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGVhZGVyczogSHR0cEhlYWRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmFtczogSHR0cFBhcmFtcztcbiAgcHJpdmF0ZSByZWFkb25seSBfcGF0aDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGluaXQ6IHtcbiAgICBtZXRob2Q6IHN0cmluZztcbiAgICBhcGk6IE9EYXRhQXBpO1xuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+O1xuICAgIGJvZHk6IGFueTtcbiAgICBvYnNlcnZlOiAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwgeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICBwYXJhbXM/OlxuICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICB8IHtcbiAgICAgICAgICBbcGFyYW06IHN0cmluZ106XG4gICAgICAgICAgICB8IHN0cmluZ1xuICAgICAgICAgICAgfCBudW1iZXJcbiAgICAgICAgICAgIHwgYm9vbGVhblxuICAgICAgICAgICAgfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgICAgICB9O1xuICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgIHwgJ2Jsb2InXG4gICAgICB8ICdqc29uJ1xuICAgICAgfCAndGV4dCdcbiAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgfCAncHJvcGVydHknXG4gICAgICB8ICdlbnRpdHknXG4gICAgICB8ICdlbnRpdGllcyc7XG4gICAgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTtcbiAgICBwYXJzZXJPcHRpb25zPzogUGFyc2VyT3B0aW9ucztcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIGJvZHlRdWVyeU9wdGlvbnM/OiBRdWVyeU9wdGlvbltdO1xuICB9KSB7XG4gICAgdGhpcy5fbWV0aG9kID0gaW5pdC5tZXRob2Q7XG4gICAgdGhpcy5yZXNvdXJjZSA9IGluaXQucmVzb3VyY2U7XG5cbiAgICB0aGlzLmFwaSA9IGluaXQuYXBpO1xuICAgIHRoaXMucmVwb3J0UHJvZ3Jlc3MgPSBpbml0LnJlcG9ydFByb2dyZXNzO1xuICAgIHRoaXMub2JzZXJ2ZSA9IGluaXQub2JzZXJ2ZTtcbiAgICB0aGlzLmNvbnRleHQgPSBpbml0LmNvbnRleHQ7XG5cbiAgICAvLyBSZXNwb25zZSBUeXBlXG4gICAgdGhpcy5fcmVzcG9uc2VUeXBlID0gaW5pdC5yZXNwb25zZVR5cGU7XG5cbiAgICAvLyBUaGUgQm9keVxuICAgIHRoaXMuX2JvZHkgPSBpbml0LmJvZHkgIT09IHVuZGVmaW5lZCA/IGluaXQuYm9keSA6IG51bGw7XG4gICAgaWYgKHRoaXMuX2JvZHkgIT09IG51bGwpXG4gICAgICB0aGlzLl9ib2R5ID0gdGhpcy5yZXNvdXJjZS5zZXJpYWxpemUodGhpcy5fYm9keSwgaW5pdC5wYXJzZXJPcHRpb25zKTtcblxuICAgIHRoaXMud2l0aENyZWRlbnRpYWxzID1cbiAgICAgIGluaXQud2l0aENyZWRlbnRpYWxzID09PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLmFwaS5vcHRpb25zLndpdGhDcmVkZW50aWFsc1xuICAgICAgICA6IGluaXQud2l0aENyZWRlbnRpYWxzO1xuICAgIHRoaXMuZmV0Y2hQb2xpY3kgPSBpbml0LmZldGNoUG9saWN5IHx8IHRoaXMuYXBpLm9wdGlvbnMuZmV0Y2hQb2xpY3k7XG4gICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zID0gW1xuICAgICAgLi4uKHRoaXMuYXBpLm9wdGlvbnMuYm9keVF1ZXJ5T3B0aW9ucyB8fCBbXSksXG4gICAgICAuLi4oaW5pdC5ib2R5UXVlcnlPcHRpb25zIHx8IFtdKSxcbiAgICBdO1xuXG4gICAgLy8gVGhlIFBhdGggYW5kIFBhcmFtcyBmcm9tIHJlc291cmNlXG4gICAgY29uc3QgW3Jlc291cmNlUGF0aCwgcmVzb3VyY2VQYXJhbXNdID0gdGhpcy5yZXNvdXJjZS5wYXRoQW5kUGFyYW1zKFxuICAgICAgaW5pdC5wYXJzZXJPcHRpb25zLFxuICAgICk7XG4gICAgdGhpcy5fcGF0aCA9IHJlc291cmNlUGF0aDtcblxuICAgIC8vI3JlZ2lvbiBIZWFkZXJzXG4gICAgY29uc3QgY3VzdG9tSGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfSA9IHt9O1xuICAgIGlmICh0eXBlb2YgaW5pdC5ldGFnID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFwaS5vcHRpb25zLmV0YWcuaWZNYXRjaCAmJlxuICAgICAgICBbJ1BVVCcsICdQQVRDSCcsICdERUxFVEUnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgICApXG4gICAgICAgIGN1c3RvbUhlYWRlcnNbSUZfTUFUQ0hfSEVBREVSXSA9IGluaXQuZXRhZztcbiAgICAgIGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmFwaS5vcHRpb25zLmV0YWcuaWZOb25lTWF0Y2ggJiZcbiAgICAgICAgWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgICApXG4gICAgICAgIGN1c3RvbUhlYWRlcnNbSUZfTk9ORV9NQVRDSF9IRUFERVJdID0gaW5pdC5ldGFnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY2VwdCA9IFtdO1xuICAgIC8vIE1ldGFkYXRhXG4gICAgaWYgKHRoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5tZXRhZGF0YSAhPT0gdW5kZWZpbmVkKVxuICAgICAgYWNjZXB0LnB1c2goYG9kYXRhLm1ldGFkYXRhPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/Lm1ldGFkYXRhfWApO1xuICAgIC8vIElFRUU3NTRcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmllZWU3NTRDb21wYXRpYmxlICE9PSB1bmRlZmluZWQpXG4gICAgICBhY2NlcHQucHVzaChcbiAgICAgICAgYElFRUU3NTRDb21wYXRpYmxlPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmllZWU3NTRDb21wYXRpYmxlfWAsXG4gICAgICApO1xuICAgIC8vIHN0cmVhbWluZ1xuICAgIGlmICh0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uc3RyZWFtaW5nICE9PSB1bmRlZmluZWQpXG4gICAgICBhY2NlcHQucHVzaChgc3RyZWFtaW5nPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LnN0cmVhbWluZ31gKTtcbiAgICAvLyBFeHBvbmVudGlhbERlY2ltYWxzXG4gICAgaWYgKHRoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5leHBvbmVudGlhbERlY2ltYWxzICE9PSB1bmRlZmluZWQpXG4gICAgICBhY2NlcHQucHVzaChcbiAgICAgICAgYEV4cG9uZW50aWFsRGVjaW1hbHM9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uZXhwb25lbnRpYWxEZWNpbWFsc31gLFxuICAgICAgKTtcbiAgICBpZiAoYWNjZXB0Lmxlbmd0aCA+IDApXG4gICAgICBjdXN0b21IZWFkZXJzW0FDQ0VQVF0gPSBbXG4gICAgICAgIGBhcHBsaWNhdGlvbi9qc29uOyR7YWNjZXB0LmpvaW4oJzsnKX1gLFxuICAgICAgICAndGV4dC9wbGFpbicsXG4gICAgICAgICcqLyonLFxuICAgICAgXTtcblxuICAgIGNvbnN0IHByZWZlciA9IFtdO1xuICAgIC8vIFJldHVyblxuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5yZXR1cm4gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgWydQT1NUJywgJ1BVVCcsICdQQVRDSCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgcmV0dXJuPSR7dGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LnJldHVybn1gKTtcbiAgICAvLyBNYXhQYWdlU2l6ZVxuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5tYXhQYWdlU2l6ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChgb2RhdGEubWF4cGFnZXNpemU9JHt0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ubWF4UGFnZVNpemV9YCk7XG4gICAgLy8gQW5ub3RhdGlvbnNcbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8uaW5jbHVkZUFubm90YXRpb25zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIFsnR0VUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMVxuICAgIClcbiAgICAgIHByZWZlci5wdXNoKFxuICAgICAgICBgb2RhdGEuaW5jbHVkZS1hbm5vdGF0aW9ucz0ke3RoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5pbmNsdWRlQW5ub3RhdGlvbnN9YCxcbiAgICAgICk7XG4gICAgLy8gT21pdCBOdWxsIFZhbHVlc1xuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5vbWl0TnVsbFZhbHVlcyA9PT0gdHJ1ZSAmJlxuICAgICAgWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goYG9taXQtdmFsdWVzPW51bGxzYCk7XG4gICAgLy8gQ29udGludWUgb24gRXJyb3JcbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8uY29udGludWVPbkVycm9yID09PSB0cnVlICYmXG4gICAgICBbJ1BPU1QnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goYG9kYXRhLmNvbnRpbnVlLW9uLWVycm9yYCk7XG4gICAgaWYgKHByZWZlci5sZW5ndGggPiAwKSBjdXN0b21IZWFkZXJzW1BSRUZFUl0gPSBwcmVmZXI7XG4gICAgdGhpcy5faGVhZGVycyA9IEh0dHAubWVyZ2VIdHRwSGVhZGVycyhcbiAgICAgIHRoaXMuYXBpLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgIGN1c3RvbUhlYWRlcnMsXG4gICAgICBpbml0LmhlYWRlcnMgfHwge30sXG4gICAgKTtcbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiBQYXJhbXNcbiAgICBjb25zdCBjdXN0b21QYXJhbXM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH0gPSB7fTtcbiAgICBpZiAoXG4gICAgICBbJ1BPU1QnLCAnUFVUJywgJ1BBVENIJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMSAmJlxuICAgICAgJyRzZWxlY3QnIGluIHJlc291cmNlUGFyYW1zXG4gICAgKSB7XG4gICAgICBjdXN0b21QYXJhbXNbJyRzZWxlY3QnXSA9IHJlc291cmNlUGFyYW1zWyckc2VsZWN0J107XG4gICAgfVxuICAgIGlmIChbJ1BPU1QnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xICYmICckZXhwYW5kJyBpbiByZXNvdXJjZVBhcmFtcykge1xuICAgICAgY3VzdG9tUGFyYW1zWyckZXhwYW5kJ10gPSByZXNvdXJjZVBhcmFtc1snJGV4cGFuZCddO1xuICAgIH1cbiAgICBpZiAoWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGN1c3RvbVBhcmFtcywgcmVzb3VyY2VQYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtcyA9IEh0dHAubWVyZ2VIdHRwUGFyYW1zKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wYXJhbXMsXG4gICAgICBjdXN0b21QYXJhbXMsXG4gICAgICBpbml0LnBhcmFtcyB8fCB7fSxcbiAgICApO1xuXG4gICAgdGhpcy5fcGFyYW1zID1cbiAgICAgIHRoaXMuX3Jlc3BvbnNlVHlwZSA9PT0gJ2VudGl0eSdcbiAgICAgICAgPyBIdHRwLndpdGhvdXRIdHRwUGFyYW1zKHBhcmFtcywgW1xuICAgICAgICAgICAgJyRmaWx0ZXInLFxuICAgICAgICAgICAgJyRvcmRlcmJ5JyxcbiAgICAgICAgICAgICckY291bnQnLFxuICAgICAgICAgICAgJyRza2lwJyxcbiAgICAgICAgICAgICckdG9wJyxcbiAgICAgICAgICBdKVxuICAgICAgICA6IHBhcmFtcztcbiAgICAvLyNlbmRyZWdpb25cbiAgfVxuXG4gIHN0YXRpYyBmYWN0b3J5KFxuICAgIGFwaTogT0RhdGFBcGksXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PixcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICAgIGJvZHlRdWVyeU9wdGlvbnM/OiBRdWVyeU9wdGlvbltdO1xuICAgIH0sXG4gICkge1xuICAgIGNvbnN0IGFwaU9wdGlvbnMgPSBhcGkub3B0aW9ucztcbiAgICBsZXQgcGFyYW1zID0gb3B0aW9ucy5wYXJhbXMgfHwge307XG4gICAgaWYgKG9wdGlvbnMud2l0aENvdW50KSB7XG4gICAgICBwYXJhbXMgPSBIdHRwLm1lcmdlSHR0cFBhcmFtcyhwYXJhbXMsIGFwaU9wdGlvbnMuaGVscGVyLmNvdW50UGFyYW0oKSk7XG4gICAgfVxuXG4gICAgbGV0IGV0YWcgPSBvcHRpb25zLmV0YWc7XG4gICAgaWYgKGV0YWcgPT09IHVuZGVmaW5lZCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KG9wdGlvbnMuYm9keSkpIHtcbiAgICAgIGV0YWcgPSBhcGlPcHRpb25zLmhlbHBlci5ldGFnKG9wdGlvbnMuYm9keSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPRGF0YVJlcXVlc3Qoe1xuICAgICAgbWV0aG9kLFxuICAgICAgZXRhZyxcbiAgICAgIGFwaSxcbiAgICAgIHJlc291cmNlLFxuICAgICAgcGFyYW1zLFxuICAgICAgY29udGV4dDogb3B0aW9ucy5jb250ZXh0LFxuICAgICAgYm9keTogb3B0aW9ucy5ib2R5LFxuICAgICAgb2JzZXJ2ZTogb3B0aW9ucy5vYnNlcnZlLFxuICAgICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IG9wdGlvbnMucmVwb3J0UHJvZ3Jlc3MsXG4gICAgICByZXNwb25zZVR5cGU6IG9wdGlvbnMucmVzcG9uc2VUeXBlLFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnMuZmV0Y2hQb2xpY3ksXG4gICAgICBwYXJzZXJPcHRpb25zOiBvcHRpb25zLnBhcnNlck9wdGlvbnMsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IG9wdGlvbnMud2l0aENyZWRlbnRpYWxzLFxuICAgICAgYm9keVF1ZXJ5T3B0aW9uczogb3B0aW9ucy5ib2R5UXVlcnlPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHJlc3BvbnNlVHlwZSgpOiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VUeXBlICYmXG4gICAgICBbJ3Byb3BlcnR5JywgJ2VudGl0eScsICdlbnRpdGllcyddLmluZGV4T2YodGhpcy5fcmVzcG9uc2VUeXBlKSAhPT0gLTFcbiAgICAgID8gJ2pzb24nXG4gICAgICA6IHRoaXMuX3Jlc3BvbnNlVHlwZSA9PT0gJ3ZhbHVlJ1xuICAgICAgPyAndGV4dCdcbiAgICAgIDogPCdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc+dGhpcy5fcmVzcG9uc2VUeXBlO1xuICB9XG5cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNRdWVyeUJvZHkoKSA/IGAke3RoaXMuX3BhdGh9LyR7JFFVRVJZfWAgOiB0aGlzLl9wYXRoO1xuICB9XG5cbiAgZ2V0IG1ldGhvZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpID8gJ1BPU1QnIDogdGhpcy5fbWV0aG9kO1xuICB9XG5cbiAgZ2V0IGJvZHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNRdWVyeUJvZHkoKVxuICAgICAgPyBIdHRwLnNwbGl0SHR0cFBhcmFtcyhcbiAgICAgICAgICB0aGlzLl9wYXJhbXMsXG4gICAgICAgICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zLm1hcCgobmFtZSkgPT4gYCQke25hbWV9YCksXG4gICAgICAgIClbMV0udG9TdHJpbmcoKVxuICAgICAgOiB0aGlzLl9ib2R5O1xuICB9XG5cbiAgZ2V0IHBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpXG4gICAgICA/IEh0dHAuc3BsaXRIdHRwUGFyYW1zKFxuICAgICAgICAgIHRoaXMuX3BhcmFtcyxcbiAgICAgICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMubWFwKChuYW1lKSA9PiBgJCR7bmFtZX1gKSxcbiAgICAgICAgKVswXVxuICAgICAgOiB0aGlzLl9wYXJhbXM7XG4gIH1cblxuICBnZXQgaGVhZGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpXG4gICAgICA/IEh0dHAubWVyZ2VIdHRwSGVhZGVycyh0aGlzLl9oZWFkZXJzLCB7IENPTlRFTlRfVFlQRTogVEVYVF9QTEFJTiB9KVxuICAgICAgOiB0aGlzLl9oZWFkZXJzO1xuICB9XG5cbiAgZ2V0IHBhdGhXaXRoUGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmFtcy5rZXlzKCkubGVuZ3RoID4gMFxuICAgICAgPyBgJHt0aGlzLnBhdGh9PyR7dGhpcy5wYXJhbXN9YFxuICAgICAgOiB0aGlzLnBhdGg7XG4gIH1cblxuICBnZXQgdXJsKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3RoaXMucGF0aH1gO1xuICB9XG5cbiAgZ2V0IHVybFdpdGhQYXJhbXMoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7dGhpcy5wYXRoV2l0aFBhcmFtc31gO1xuICB9XG5cbiAgZ2V0IGNhY2hlS2V5KCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbXMua2V5cygpLmxlbmd0aCA+IDBcbiAgICAgID8gYCR7dGhpcy5fcGF0aH0/JHt0aGlzLl9wYXJhbXN9YFxuICAgICAgOiB0aGlzLl9wYXRoO1xuICB9XG5cbiAgaXNRdWVyeUJvZHkoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX21ldGhvZCA9PT0gJ0dFVCcgJiZcbiAgICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMuc29tZSgobmFtZSkgPT4gdGhpcy5fcGFyYW1zLmhhcyhgJCR7bmFtZX1gKSlcbiAgICApO1xuICB9XG5cbiAgaXNCYXRjaCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoLmVuZHNXaXRoKCRCQVRDSCk7XG4gIH1cblxuICBpc0ZldGNoKCkge1xuICAgIHJldHVybiBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTE7XG4gIH1cblxuICBpc011dGF0ZSgpIHtcbiAgICByZXR1cm4gWydQVVQnLCAnUEFUQ0gnLCAnUE9TVCcsICdERUxFVEUnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xO1xuICB9XG59XG4iXX0=
|