@elderbyte/ngx-starter 16.5.0 → 16.6.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.
@@ -16,6 +16,19 @@ export class ElderQuantityService {
16
16
  createDimensions(length, width, height) {
17
17
  return Dimensions.from(length.unit, length.value, this.convertToUnit(width, length.unit).value, this.convertToUnit(height, length.unit).value);
18
18
  }
19
+ /**
20
+ * Returns a copy of the maximum (longest) edge of the dimensions.
21
+ *
22
+ * @param dimensions
23
+ */
24
+ getMaxEdge(dimensions) {
25
+ if (!dimensions) {
26
+ return null;
27
+ }
28
+ else {
29
+ return Quantity.from(dimensions.unit, Math.max(dimensions.width, dimensions.length, dimensions.height));
30
+ }
31
+ }
19
32
  /***************************************************************************
20
33
  * *
21
34
  * Constructor *
@@ -132,6 +145,26 @@ export class ElderQuantityService {
132
145
  }
133
146
  return Quantity.from(left.unit, left.value - this.convertToUnit(right, left.unit).value);
134
147
  }
148
+ /**
149
+ * Returns the max quantity of an array of quantities.
150
+ *
151
+ * Example:
152
+ * Quantity(10, 'm'), Quantity(2500, 'cm'), Quantity(0.003, 'km') = Quantity(2500, 'cm')
153
+ *
154
+ * @param quantities
155
+ */
156
+ max(quantities) {
157
+ if (!quantities || quantities.length == 0) {
158
+ return null;
159
+ }
160
+ const helpers = quantities
161
+ .map(quantity => ({
162
+ original: quantity,
163
+ baseValue: this.toBaseUnitValue(quantity)
164
+ }));
165
+ helpers.sort((a, b) => b.baseValue - a.baseValue);
166
+ return helpers[0].original;
167
+ }
135
168
  /**
136
169
  * Transforms a quantity to another quantity of the same dimension by target-SI
137
170
  *
@@ -234,4 +267,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
234
267
  providedIn: 'root'
235
268
  }]
236
269
  }], ctorParameters: function () { return [{ type: i1.ElderUnitService }]; } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvdXRpbC9lbGRlci1xdWFudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7OztBQUtuRCxNQUFNLE9BQU8sb0JBQW9CO0lBYS9COzs7O2dGQUk0RTtJQUVyRSxVQUFVLENBQUMsTUFBZ0IsRUFBRSxLQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUMxQixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVNLGdCQUFnQixDQUNyQixNQUFnQixFQUNoQixLQUFlLEVBQ2YsTUFBZ0I7UUFFaEIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUNwQixNQUFNLENBQUMsSUFBSSxFQUNYLE1BQU0sQ0FBQyxLQUFLLEVBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsWUFDbUIsV0FBNkI7UUFBN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBN0NoRDs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4RCx3QkFBbUIsR0FBRyxHQUFHLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztJQXNDOUQsQ0FBQztJQUdEOzs7O2dGQUk0RTtJQUVyRSxRQUFRLENBQUMsUUFBa0IsRUFBRSxJQUFVO1FBQzVDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxTQUFTLENBQUMsUUFBa0IsRUFBRSxLQUFhO1FBQ2hELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxXQUFXLENBQUMsTUFBZ0I7UUFDakMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQWEsRUFBRSxLQUFlO1FBQy9DLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBRUksUUFBUSxDQUFDLFFBQWtCLEVBQUUsVUFBa0I7UUFFcEQsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixRQUFRLENBQUMsSUFBSSxFQUNiLFFBQVEsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLGdCQUFnQixDQUFDLFFBQWtCLEVBQUUsT0FBaUI7UUFFM0QsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxjQUFjLEdBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxNQUFNLGFBQWEsR0FBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE9BQU8sY0FBYyxHQUFHLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBR0Q7Ozs7Ozs7T0FPRztJQUNJLEdBQUcsQ0FBQyxVQUFzQjtRQUMvQixJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXRDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FDbEIsVUFBVSxFQUNWLFVBQVUsQ0FBQyxNQUFNLENBQ2YsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDYixPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0QsQ0FBQyxFQUFFLENBQUMsQ0FDTCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxRQUFRLENBQUMsT0FBaUIsRUFBRSxVQUFvQjtRQUNyRCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQ1osT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksR0FBRyxDQUFDLElBQWMsRUFBRSxLQUFlO1FBQ3hDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FDbEIsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQ3hELENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxhQUFhLENBQUMsUUFBa0IsRUFBRSxVQUFnQjtRQUN2RCxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQ2hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRDtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdEUsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUU7WUFDeEIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixVQUFVLEVBQ1YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxnQkFBZ0IsQ0FDbEQsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsR0FBRyxVQUFVLEdBQUcsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZHLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVNLGVBQWUsQ0FBQyxRQUFrQjtRQUN2QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RSxPQUFPLFFBQVEsQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFNBQVMsQ0FBQyxRQUFrQjtRQUVqQyxjQUFjO1FBQ2QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxvQkFBb0I7UUFDcEIsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLFVBQVUsQ0FBQztTQUNuQjthQUFNO1lBRUwsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXhELGVBQWU7WUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUUzQyxPQUFPLGNBQWMsQ0FBQztTQUV2QjtJQUNILENBQUM7SUFJRDs7OztnRkFJNEU7SUFFcEUsaUJBQWlCLENBQUMsUUFBa0I7UUFFMUMsb0NBQW9DO1FBRXBDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFBRSxPQUFPLFFBQVEsQ0FBQztTQUFFO1FBRXBDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFakQsSUFBSSxZQUFzQixDQUFDO1FBRTNCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFM0UsSUFBSSxjQUFjLEVBQUU7WUFFbEIsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFekYsS0FBSyxNQUFNLFFBQVEsSUFBSSxpQkFBaUIsRUFBRTtnQkFDeEMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxRQUFRLENBQUMsWUFBWSxJQUFJLGVBQWUsRUFBRTtvQkFDNUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztvQkFDeEIsTUFBTTtpQkFDUDthQUNGO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxHQUFHLFNBQVMsR0FBRyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxPQUFPLEdBQUcsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ3pIO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RSx5RUFBeUU7UUFDekUsNEhBQTRIO1FBQzVILElBQUksWUFBWSxDQUFDLFlBQVksS0FBSyxhQUFhLEVBQUU7WUFDL0MsT0FBTyxRQUFRLENBQUM7U0FDakI7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFFBQWtCO1FBQzlDLE9BQU8sUUFBUSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM5QyxDQUFDOytHQTNTVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtVbml0fSBmcm9tICcuLi9tb2RlbC91bml0JztcbmltcG9ydCB7UXVhbnRpdHl9IGZyb20gJy4uL21vZGVsL3F1YW50aXR5JztcbmltcG9ydCB7VW5pdEluZm99IGZyb20gJy4uL21vZGVsL3VuaXQtcmVnaXN0cnknO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RWxkZXJVbml0U2VydmljZX0gZnJvbSAnLi4vZWxkZXItdW5pdC5zZXJ2aWNlJztcbmltcG9ydCB7RGltZW5zaW9uc30gZnJvbSAnLi4vbW9kZWwvZGltZW5zaW9ucyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJRdWFudGl0eVNlcnZpY2Uge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFFVQU5USVRZX0NBQ0hFX1NJWkUgPSA1MDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgUVVBTlRJVFlfQ0FDSEUgPSBuZXcgTWFwPHN0cmluZywgUXVhbnRpdHk+KCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEJ1aWxkZXIgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGNyZWF0ZUFyZWEobGVuZ3RoOiBRdWFudGl0eSwgd2lkdGg6IFF1YW50aXR5KTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRGltZW5zaW9ucyhcbiAgICAgIGxlbmd0aCxcbiAgICAgIHdpZHRoLFxuICAgICAgUXVhbnRpdHkuemVybyhsZW5ndGgudW5pdClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZURpbWVuc2lvbnMoXG4gICAgbGVuZ3RoOiBRdWFudGl0eSxcbiAgICB3aWR0aDogUXVhbnRpdHksXG4gICAgaGVpZ2h0OiBRdWFudGl0eVxuICApOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tKFxuICAgICAgbGVuZ3RoLnVuaXQsXG4gICAgICBsZW5ndGgudmFsdWUsXG4gICAgICB0aGlzLmNvbnZlcnRUb1VuaXQod2lkdGgsIGxlbmd0aC51bml0KS52YWx1ZSxcbiAgICAgIHRoaXMuY29udmVydFRvVW5pdChoZWlnaHQsIGxlbmd0aC51bml0KS52YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVuaXRTZXJ2aWNlOiBFbGRlclVuaXRTZXJ2aWNlXG4gICkge1xuICB9XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgd2l0aFVuaXQocXVhbnRpdHk6IFF1YW50aXR5LCB1bml0OiBVbml0KSB7XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20odW5pdCwgcXVhbnRpdHkudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHdpdGhWYWx1ZShxdWFudGl0eTogUXVhbnRpdHksIHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2FjaGVMb29rdXAobG9va3VwOiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICByZXR1cm4gdGhpcy5RVUFOVElUWV9DQUNIRS5nZXQodGhpcy5nZXRRdWFudGl0eUlkZW50aWZpZXIobG9va3VwKSk7XG4gIH1cblxuICBwdWJsaWMgY2FjaGVVcGRhdGUoa2V5OiBRdWFudGl0eSwgdmFsdWU6IFF1YW50aXR5KSB7XG4gICAgaWYgKHRoaXMuUVVBTlRJVFlfQ0FDSEUuc2l6ZSA+PSB0aGlzLlFVQU5USVRZX0NBQ0hFX1NJWkUpIHtcbiAgICAgIHRoaXMuUVVBTlRJVFlfQ0FDSEUuY2xlYXIoKTtcbiAgICB9XG4gICAgdGhpcy5RVUFOVElUWV9DQUNIRS5zZXQodGhpcy5nZXRRdWFudGl0eUlkZW50aWZpZXIoa2V5KSwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE11bHRpcGxpZXMgYSBxdWFudGl0eSB3aXRoIGEgbXVsdGlwbGllciBhbmQgcmV0dXJucyBhIHF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAqIDMgPSBRdWFudGl0eSgzMDAwMCwnZycpXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0eVxuICAgKiBAcGFyYW0gbXVsdGlwbGllclxuICAgKi9cblxuICBwdWJsaWMgbXVsdGlwbHkocXVhbnRpdHk6IFF1YW50aXR5LCBtdWx0aXBsaWVyOiBudW1iZXIpOiBRdWFudGl0eSB7XG5cbiAgICBpZiAoIXF1YW50aXR5IHx8ICFtdWx0aXBsaWVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICBxdWFudGl0eS51bml0LFxuICAgICAgcXVhbnRpdHkudmFsdWUgKiBtdWx0aXBsaWVyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXZpZGVzIGEgcXVhbnRpdHkgYnkgYW5vdGhlciBxdWFudGl0eSBhbmQgcmV0dXJucyBhIHNjYWxhci5cbiAgICpcbiAgICogRXhhbXBsZXM6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC8gUXVhbnRpdHkoNSwna2cnKSA9IDJcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgLyBRdWFudGl0eSg1LCdnJykgPSAyMDAwXG4gICAqXG4gICAqIEBwYXJhbSBkaXZpZGVuZFxuICAgKiBAcGFyYW0gZGl2aXNvclxuICAgKi9cbiAgcHVibGljIGRpdmlkZUJ5UXVhbnRpdHkoZGl2aWRlbmQ6IFF1YW50aXR5LCBkaXZpc29yOiBRdWFudGl0eSk6IG51bWJlciB7XG5cbiAgICBpZiAoIWRpdmlkZW5kIHx8ICFkaXZpc29yKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZGl2aWRlbmROb3JtYWwgPSAgdGhpcy50b0Jhc2VVbml0VmFsdWUoZGl2aWRlbmQpO1xuICAgIGNvbnN0IGRpdmlzb3JOb3JtYWwgPSAgdGhpcy50b0Jhc2VVbml0VmFsdWUoZGl2aXNvcik7XG4gICAgcmV0dXJuIGRpdmlkZW5kTm9ybWFsIC8gZGl2aXNvck5vcm1hbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN1bXMgdXAgUXVhbnRpdGllcyBhbmQgcmV0dXJucyBhIFF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSArIFF1YW50aXR5KDUsJ2tnJykgKyBRdWFudGl0eSg1LCdnJykgPSBRdWFudGl0eSgxNTAwNSwgJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdGllc1xuICAgKi9cbiAgcHVibGljIHN1bShxdWFudGl0aWVzOiBRdWFudGl0eVtdKTogUXVhbnRpdHkge1xuICAgIGlmICghcXVhbnRpdGllcyB8fCBxdWFudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0VW5pdCA9IHF1YW50aXRpZXNbMF0udW5pdDtcblxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgdGFyZ2V0VW5pdCxcbiAgICAgIHF1YW50aXRpZXMucmVkdWNlKFxuICAgICAgICAodG90YWwsIGFkZCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0b3RhbCArIHRoaXMuY29udmVydFRvVW5pdChhZGQsIHRhcmdldFVuaXQpLnZhbHVlO1xuICAgICAgICB9LCAwXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgYSBxdWFudGl0eSBmcm9tIGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBxdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgLSBRdWFudGl0eSg1LCdnJykgPSBRdWFudGl0eSg5OTk1LCAnZycpXG4gICAqXG4gICAqIEBwYXJhbSBtaW51ZW5kXG4gICAqIEBwYXJhbSBzdWJ0cmFoZW5kXG4gICAqL1xuICBwdWJsaWMgc3VidHJhY3QobWludWVuZDogUXVhbnRpdHksIHN1YnRyYWhlbmQ6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuICAgIGlmICghbWludWVuZCB8fCAhc3VidHJhaGVuZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgbWludWVuZC51bml0LFxuICAgICAgbWludWVuZC52YWx1ZSAtIHRoaXMuY29udmVydFRvVW5pdChzdWJ0cmFoZW5kLCBtaW51ZW5kLnVuaXQpLnZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgYSBxdWFudGl0eSBmcm9tIGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBxdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgKyBRdWFudGl0eSg1MDAsJ2cnKSA9IFF1YW50aXR5KDEwLjUsICdrZycpXG4gICAqXG4gICAqIEBwYXJhbSBsZWZ0XG4gICAqIEBwYXJhbSByaWdodFxuICAgKi9cbiAgcHVibGljIGFkZChsZWZ0OiBRdWFudGl0eSwgcmlnaHQ6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuICAgIGlmICghbGVmdCB8fCAhcmlnaHQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIGxlZnQudW5pdCxcbiAgICAgIGxlZnQudmFsdWUgLSB0aGlzLmNvbnZlcnRUb1VuaXQocmlnaHQsIGxlZnQudW5pdCkudmFsdWVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYSBxdWFudGl0eSB0byBhbm90aGVyIHF1YW50aXR5IG9mIHRoZSBzYW1lIGRpbWVuc2lvbiBieSB0YXJnZXQtU0lcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqIEBwYXJhbSB0YXJnZXRVbml0XG4gICAqL1xuICBwdWJsaWMgY29udmVydFRvVW5pdChxdWFudGl0eTogUXVhbnRpdHksIHRhcmdldFVuaXQ6IFVuaXQpOiBRdWFudGl0eSB7XG4gICAgaWYgKCFxdWFudGl0eSB8fCAhdGFyZ2V0VW5pdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHF1YW50aXR5LnVuaXQgPT09IHRhcmdldFVuaXQpIHtcbiAgICAgIHJldHVybiBRdWFudGl0eS5mcm9tKHF1YW50aXR5LnVuaXQsIHF1YW50aXR5LnZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRCYXNlRmFjdG9yID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IodGFyZ2V0VW5pdCk7XG5cbiAgICBpZiAodGFyZ2V0QmFzZUZhY3RvciA+IDApIHtcbiAgICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgICB0YXJnZXRVbml0LFxuICAgICAgICB0aGlzLnRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eSkgLyB0YXJnZXRCYXNlRmFjdG9yXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdGYWlsZWQgdG8gY29udmVydCBxdWFudGl0eSB0byB0YXJnZXQgdW5pdDonICsgdGFyZ2V0VW5pdCArICcuIFF1YW50aXR5OiAnLCBxdWFudGl0eSk7XG4gICAgICByZXR1cm4gcXVhbnRpdHk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eTogUXVhbnRpdHkpOiBudW1iZXIge1xuICAgIGNvbnN0IHRhcmdldEJhc2VGYWN0b3IgPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFRvQmFzZUZhY3RvcihxdWFudGl0eS51bml0KTtcbiAgICByZXR1cm4gcXVhbnRpdHkudmFsdWUgKiB0YXJnZXRCYXNlRmFjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBxdWFudGl0eSBpbiBhIG5vcm1hbGl6ZWQgZm9ybS5cbiAgICogQSBjYWNoZSBpcyB1c2VkIHRvIHJlZHVjZSBjYWxjdWxhdGlvbnMuXG4gICAqXG4gICAqIDg1MDAga2cgLT4gOC41IHRcbiAgICogOTAwMDAwMCBtbSAtPiA5IGttXG4gICAqIDEyMTUgbSAtPiAxLjIga21cbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqL1xuICBwdWJsaWMgbm9ybWFsaXplKHF1YW50aXR5OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcblxuICAgIC8vIENoZWNrIGNhY2hlXG4gICAgY29uc3QgY2FjaGVkSXRlbSA9IHRoaXMuY2FjaGVMb29rdXAocXVhbnRpdHkpO1xuXG4gICAgLy8gVmFsdWUgaXMgaW4gY2FjaGVcbiAgICBpZiAoY2FjaGVkSXRlbSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEl0ZW07XG4gICAgfSBlbHNlIHtcblxuICAgICAgY29uc3QgdGFyZ2V0UXVhbnRpdHkgPSB0aGlzLm5vcm1hbGl6ZUludGVybmFsKHF1YW50aXR5KTtcblxuICAgICAgLy8gVXBkYXRlIGNhY2hlXG4gICAgICB0aGlzLmNhY2hlVXBkYXRlKHF1YW50aXR5LCB0YXJnZXRRdWFudGl0eSk7XG5cbiAgICAgIHJldHVybiB0YXJnZXRRdWFudGl0eTtcblxuICAgIH1cbiAgfVxuXG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIG5vcm1hbGl6ZUludGVybmFsKHF1YW50aXR5OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcblxuICAgIC8vIEdpdmVuIHF1YW50aXR5IHZhbHVlIGluIGJhc2UgdW5pdFxuXG4gICAgY29uc3QgZGltZW5zaW9uID0gdGhpcy51bml0U2VydmljZS5nZXRVbml0RGltZW5zaW9uKHF1YW50aXR5LnVuaXQpO1xuXG4gICAgaWYgKCFkaW1lbnNpb24pIHsgcmV0dXJuIHF1YW50aXR5OyB9XG5cbiAgICBjb25zdCBiYXNlVmFsdWUgPSB0aGlzLnRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eSk7XG5cbiAgICBsZXQgc3VpdGFibGVVbml0OiBVbml0SW5mbztcblxuICAgIGNvbnN0IGRpbWVuc2lvblVuaXRzID0gdGhpcy51bml0U2VydmljZS5nZXRVbml0SW5mb3NCeURpbWVuc2lvbihkaW1lbnNpb24pO1xuXG4gICAgaWYgKGRpbWVuc2lvblVuaXRzKSB7XG5cbiAgICAgIGNvbnN0IGZhY3RvclNvcnRlZFVuaXRzID0gZGltZW5zaW9uVW5pdHMuc29ydCgoYSwgYikgPT4gYi50b0Jhc2VGYWN0b3IgLSBhLnRvQmFzZUZhY3Rvcik7XG5cbiAgICAgIGZvciAoY29uc3QgdW5pdEluZm8gb2YgZmFjdG9yU29ydGVkVW5pdHMpIHtcbiAgICAgICAgY29uc3Qgc2lnbmVkQmFzZVZhbHVlID0gKChiYXNlVmFsdWUgPCAwKSA/IGJhc2VWYWx1ZSAqIC0xIDogYmFzZVZhbHVlKTtcbiAgICAgICAgaWYgKHVuaXRJbmZvLnRvQmFzZUZhY3RvciA8PSBzaWduZWRCYXNlVmFsdWUpIHtcbiAgICAgICAgICBzdWl0YWJsZVVuaXQgPSB1bml0SW5mbztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ291bGQgbm90IGZpbmQgRGltZW5zaW9uIGluZm8gZm9yICcgKyBkaW1lbnNpb24gKyAnLiAoJyArIHF1YW50aXR5LnVuaXQgKyAnIC0tPiAnICsgZGltZW5zaW9uICsgJyknKTtcbiAgICB9XG5cbiAgICBpZiAoIXN1aXRhYmxlVW5pdCkge1xuICAgICAgcmV0dXJuIHF1YW50aXR5O1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRUb0Jhc2UgPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFRvQmFzZUZhY3RvcihxdWFudGl0eS51bml0KTtcblxuICAgIC8vIEVuc3VyZSB3ZSBwcmVmZXIgdGhlIGluaXRpYWwgdW5pdCBpZiB0aGUgYWN0dWFsIHZhbHVlIGlzIG5vdCBhZmZlY3RlZC5cbiAgICAvLyBUaGlzIGhlbHBzIHRvIGJlIGNvbnNpc3RlbnQgYW5kIGRpc3BsYXkgdGhlIGFjdHVhbCB1bml0IGluIHJhcmUgY2FzZXMgd2hlbiBtdWx0aXBsZSB1bml0IGFsdGVybmF0aXZlcyBleGlzdCAoc2FtZSBmYWN0b3IpXG4gICAgaWYgKHN1aXRhYmxlVW5pdC50b0Jhc2VGYWN0b3IgPT09IGN1cnJlbnRUb0Jhc2UpIHtcbiAgICAgIHJldHVybiBxdWFudGl0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvVW5pdChxdWFudGl0eSwgc3VpdGFibGVVbml0LnVuaXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UXVhbnRpdHlJZGVudGlmaWVyKHF1YW50aXR5OiBRdWFudGl0eSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHF1YW50aXR5LnZhbHVlICsgJy0nICsgcXVhbnRpdHkudW5pdDtcbiAgfVxuXG59XG4iXX0=
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvdXRpbC9lbGRlci1xdWFudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7OztBQVVuRCxNQUFNLE9BQU8sb0JBQW9CO0lBYS9COzs7O2dGQUk0RTtJQUVyRSxVQUFVLENBQUMsTUFBZ0IsRUFBRSxLQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUMxQixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVNLGdCQUFnQixDQUNyQixNQUFnQixFQUNoQixLQUFlLEVBQ2YsTUFBZ0I7UUFFaEIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUNwQixNQUFNLENBQUMsSUFBSSxFQUNYLE1BQU0sQ0FBQyxLQUFLLEVBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLFVBQXNCO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFD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O2dCQUN2RSxJQUFJLFFBQVEsQ0FBQyxZQUFZLElBQUksZUFBZSxFQUFFO29CQUM1QyxZQUFZLEdBQUcsUUFBUSxDQUFDO29CQUN4QixNQUFNO2lCQUNQO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEdBQUcsU0FBUyxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sR0FBRyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDekg7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRFLHlFQUF5RTtRQUN6RSw0SEFBNEg7UUFDNUgsSUFBSSxZQUFZLENBQUMsWUFBWSxLQUFLLGFBQWEsRUFBRTtZQUMvQyxPQUFPLFFBQVEsQ0FBQztTQUNqQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsUUFBa0I7UUFDOUMsT0FBTyxRQUFRLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7K0dBdlZVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1VuaXR9IGZyb20gJy4uL21vZGVsL3VuaXQnO1xuaW1wb3J0IHtRdWFudGl0eX0gZnJvbSAnLi4vbW9kZWwvcXVhbnRpdHknO1xuaW1wb3J0IHtVbml0SW5mb30gZnJvbSAnLi4vbW9kZWwvdW5pdC1yZWdpc3RyeSc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFbGRlclVuaXRTZXJ2aWNlfSBmcm9tICcuLi9lbGRlci11bml0LnNlcnZpY2UnO1xuaW1wb3J0IHtEaW1lbnNpb25zfSBmcm9tICcuLi9tb2RlbC9kaW1lbnNpb25zJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuXG5pbnRlcmZhY2UgUXVhbnRpdHlXaXRoQmFzZVZhbHVlIHtcbiAgb3JpZ2luYWw6IFF1YW50aXR5O1xuICBiYXNlVmFsdWU6IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJRdWFudGl0eVNlcnZpY2Uge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFFVQU5USVRZX0NBQ0hFX1NJWkUgPSA1MDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgUVVBTlRJVFlfQ0FDSEUgPSBuZXcgTWFwPHN0cmluZywgUXVhbnRpdHk+KCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEJ1aWxkZXIgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGNyZWF0ZUFyZWEobGVuZ3RoOiBRdWFudGl0eSwgd2lkdGg6IFF1YW50aXR5KTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRGltZW5zaW9ucyhcbiAgICAgIGxlbmd0aCxcbiAgICAgIHdpZHRoLFxuICAgICAgUXVhbnRpdHkuemVybyhsZW5ndGgudW5pdClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZURpbWVuc2lvbnMoXG4gICAgbGVuZ3RoOiBRdWFudGl0eSxcbiAgICB3aWR0aDogUXVhbnRpdHksXG4gICAgaGVpZ2h0OiBRdWFudGl0eVxuICApOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tKFxuICAgICAgbGVuZ3RoLnVuaXQsXG4gICAgICBsZW5ndGgudmFsdWUsXG4gICAgICB0aGlzLmNvbnZlcnRUb1VuaXQod2lkdGgsIGxlbmd0aC51bml0KS52YWx1ZSxcbiAgICAgIHRoaXMuY29udmVydFRvVW5pdChoZWlnaHQsIGxlbmd0aC51bml0KS52YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhlIG1heGltdW0gKGxvbmdlc3QpIGVkZ2Ugb2YgdGhlIGRpbWVuc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBkaW1lbnNpb25zXG4gICAqL1xuICBwdWJsaWMgZ2V0TWF4RWRnZShkaW1lbnNpb25zOiBEaW1lbnNpb25zKTogUXVhbnRpdHkge1xuICAgIGlmICghZGltZW5zaW9ucykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgICBkaW1lbnNpb25zLnVuaXQsXG4gICAgICAgIE1hdGgubWF4KGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMubGVuZ3RoLCBkaW1lbnNpb25zLmhlaWdodClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bml0U2VydmljZTogRWxkZXJVbml0U2VydmljZVxuICApIHtcbiAgfVxuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHdpdGhVbml0KHF1YW50aXR5OiBRdWFudGl0eSwgdW5pdDogVW5pdCkge1xuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKHVuaXQsIHF1YW50aXR5LnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyB3aXRoVmFsdWUocXVhbnRpdHk6IFF1YW50aXR5LCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20ocXVhbnRpdHkudW5pdCwgdmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGNhY2hlTG9va3VwKGxvb2t1cDogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG4gICAgcmV0dXJuIHRoaXMuUVVBTlRJVFlfQ0FDSEUuZ2V0KHRoaXMuZ2V0UXVhbnRpdHlJZGVudGlmaWVyKGxvb2t1cCkpO1xuICB9XG5cbiAgcHVibGljIGNhY2hlVXBkYXRlKGtleTogUXVhbnRpdHksIHZhbHVlOiBRdWFudGl0eSkge1xuICAgIGlmICh0aGlzLlFVQU5USVRZX0NBQ0hFLnNpemUgPj0gdGhpcy5RVUFOVElUWV9DQUNIRV9TSVpFKSB7XG4gICAgICB0aGlzLlFVQU5USVRZX0NBQ0hFLmNsZWFyKCk7XG4gICAgfVxuICAgIHRoaXMuUVVBTlRJVFlfQ0FDSEUuc2V0KHRoaXMuZ2V0UXVhbnRpdHlJZGVudGlmaWVyKGtleSksIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdWx0aXBsaWVzIGEgcXVhbnRpdHkgd2l0aCBhIG11bHRpcGxpZXIgYW5kIHJldHVybnMgYSBxdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgKiAzID0gUXVhbnRpdHkoMzAwMDAsJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdHlcbiAgICogQHBhcmFtIG11bHRpcGxpZXJcbiAgICovXG5cbiAgcHVibGljIG11bHRpcGx5KHF1YW50aXR5OiBRdWFudGl0eSwgbXVsdGlwbGllcjogbnVtYmVyKTogUXVhbnRpdHkge1xuXG4gICAgaWYgKCFxdWFudGl0eSB8fCAhbXVsdGlwbGllcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgcXVhbnRpdHkudW5pdCxcbiAgICAgIHF1YW50aXR5LnZhbHVlICogbXVsdGlwbGllclxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGl2aWRlcyBhIHF1YW50aXR5IGJ5IGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBzY2FsYXIuXG4gICAqXG4gICAqIEV4YW1wbGVzOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAvIFF1YW50aXR5KDUsJ2tnJykgPSAyXG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC8gUXVhbnRpdHkoNSwnZycpID0gMjAwMFxuICAgKlxuICAgKiBAcGFyYW0gZGl2aWRlbmRcbiAgICogQHBhcmFtIGRpdmlzb3JcbiAgICovXG4gIHB1YmxpYyBkaXZpZGVCeVF1YW50aXR5KGRpdmlkZW5kOiBRdWFudGl0eSwgZGl2aXNvcjogUXVhbnRpdHkpOiBudW1iZXIge1xuXG4gICAgaWYgKCFkaXZpZGVuZCB8fCAhZGl2aXNvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGRpdmlkZW5kTm9ybWFsID0gIHRoaXMudG9CYXNlVW5pdFZhbHVlKGRpdmlkZW5kKTtcbiAgICBjb25zdCBkaXZpc29yTm9ybWFsID0gIHRoaXMudG9CYXNlVW5pdFZhbHVlKGRpdmlzb3IpO1xuICAgIHJldHVybiBkaXZpZGVuZE5vcm1hbCAvIGRpdmlzb3JOb3JtYWw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBTdW1zIHVwIFF1YW50aXRpZXMgYW5kIHJldHVybnMgYSBRdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgKyBRdWFudGl0eSg1LCdrZycpICsgUXVhbnRpdHkoNSwnZycpID0gUXVhbnRpdHkoMTUwMDUsICdnJylcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXRpZXNcbiAgICovXG4gIHB1YmxpYyBzdW0ocXVhbnRpdGllczogUXVhbnRpdHlbXSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXRpZXMgfHwgcXVhbnRpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldFVuaXQgPSBxdWFudGl0aWVzWzBdLnVuaXQ7XG5cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIHRhcmdldFVuaXQsXG4gICAgICBxdWFudGl0aWVzLnJlZHVjZShcbiAgICAgICAgKHRvdGFsLCBhZGQpID0+IHtcbiAgICAgICAgICByZXR1cm4gdG90YWwgKyB0aGlzLmNvbnZlcnRUb1VuaXQoYWRkLCB0YXJnZXRVbml0KS52YWx1ZTtcbiAgICAgICAgfSwgMFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3VidHJhY3RzIGEgcXVhbnRpdHkgZnJvbSBhbm90aGVyIHF1YW50aXR5IGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC0gUXVhbnRpdHkoNSwnZycpID0gUXVhbnRpdHkoOTk5NSwgJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gbWludWVuZFxuICAgKiBAcGFyYW0gc3VidHJhaGVuZFxuICAgKi9cbiAgcHVibGljIHN1YnRyYWN0KG1pbnVlbmQ6IFF1YW50aXR5LCBzdWJ0cmFoZW5kOiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIW1pbnVlbmQgfHwgIXN1YnRyYWhlbmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIG1pbnVlbmQudW5pdCxcbiAgICAgIG1pbnVlbmQudmFsdWUgLSB0aGlzLmNvbnZlcnRUb1VuaXQoc3VidHJhaGVuZCwgbWludWVuZC51bml0KS52YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3VidHJhY3RzIGEgcXVhbnRpdHkgZnJvbSBhbm90aGVyIHF1YW50aXR5IGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpICsgUXVhbnRpdHkoNTAwLCdnJykgPSBRdWFudGl0eSgxMC41LCAna2cnKVxuICAgKlxuICAgKiBAcGFyYW0gbGVmdFxuICAgKiBAcGFyYW0gcmlnaHRcbiAgICovXG4gIHB1YmxpYyBhZGQobGVmdDogUXVhbnRpdHksIHJpZ2h0OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIWxlZnQgfHwgIXJpZ2h0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICBsZWZ0LnVuaXQsXG4gICAgICBsZWZ0LnZhbHVlIC0gdGhpcy5jb252ZXJ0VG9Vbml0KHJpZ2h0LCBsZWZ0LnVuaXQpLnZhbHVlXG4gICAgKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1heCBxdWFudGl0eSBvZiBhbiBhcnJheSBvZiBxdWFudGl0aWVzLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwgJ20nKSwgUXVhbnRpdHkoMjUwMCwgJ2NtJyksIFF1YW50aXR5KDAuMDAzLCAna20nKSA9IFF1YW50aXR5KDI1MDAsICdjbScpXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0aWVzXG4gICAqL1xuXG4gIHB1YmxpYyBtYXgocXVhbnRpdGllczogUXVhbnRpdHlbXSk6IFF1YW50aXR5IHtcblxuICAgIGlmICghcXVhbnRpdGllcyB8fCBxdWFudGl0aWVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBoZWxwZXJzID0gcXVhbnRpdGllc1xuICAgICAgLm1hcChxdWFudGl0eSA9PiA8UXVhbnRpdHlXaXRoQmFzZVZhbHVlPntcbiAgICAgICAgb3JpZ2luYWw6IHF1YW50aXR5LFxuICAgICAgICBiYXNlVmFsdWU6IHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KVxuICAgICAgfSk7XG5cbiAgICBoZWxwZXJzLnNvcnQoKGEsIGIpID0+IGIuYmFzZVZhbHVlIC0gYS5iYXNlVmFsdWUpO1xuXG4gICAgcmV0dXJuIGhlbHBlcnNbMF0ub3JpZ2luYWw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgcXVhbnRpdHkgdG8gYW5vdGhlciBxdWFudGl0eSBvZiB0aGUgc2FtZSBkaW1lbnNpb24gYnkgdGFyZ2V0LVNJXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0eVxuICAgKiBAcGFyYW0gdGFyZ2V0VW5pdFxuICAgKi9cbiAgcHVibGljIGNvbnZlcnRUb1VuaXQocXVhbnRpdHk6IFF1YW50aXR5LCB0YXJnZXRVbml0OiBVbml0KTogUXVhbnRpdHkge1xuICAgIGlmICghcXVhbnRpdHkgfHwgIXRhcmdldFVuaXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChxdWFudGl0eS51bml0ID09PSB0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCBxdWFudGl0eS52YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0QmFzZUZhY3RvciA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHRhcmdldFVuaXQpO1xuXG4gICAgaWYgKHRhcmdldEJhc2VGYWN0b3IgPiAwKSB7XG4gICAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgICAgdGFyZ2V0VW5pdCxcbiAgICAgICAgdGhpcy50b0Jhc2VVbml0VmFsdWUocXVhbnRpdHkpIC8gdGFyZ2V0QmFzZUZhY3RvclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIud2FybignRmFpbGVkIHRvIGNvbnZlcnQgcXVhbnRpdHkgdG8gdGFyZ2V0IHVuaXQ6JyArIHRhcmdldFVuaXQgKyAnLiBRdWFudGl0eTogJywgcXVhbnRpdHkpO1xuICAgICAgcmV0dXJuIHF1YW50aXR5O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b0Jhc2VVbml0VmFsdWUocXVhbnRpdHk6IFF1YW50aXR5KTogbnVtYmVyIHtcbiAgICBjb25zdCB0YXJnZXRCYXNlRmFjdG9yID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IocXVhbnRpdHkudW5pdCk7XG4gICAgcmV0dXJuIHF1YW50aXR5LnZhbHVlICogdGFyZ2V0QmFzZUZhY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcXVhbnRpdHkgaW4gYSBub3JtYWxpemVkIGZvcm0uXG4gICAqIEEgY2FjaGUgaXMgdXNlZCB0byByZWR1Y2UgY2FsY3VsYXRpb25zLlxuICAgKlxuICAgKiA4NTAwIGtnIC0+IDguNSB0XG4gICAqIDkwMDAwMDAgbW0gLT4gOSBrbVxuICAgKiAxMjE1IG0gLT4gMS4yIGttXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0eVxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShxdWFudGl0eTogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG5cbiAgICAvLyBDaGVjayBjYWNoZVxuICAgIGNvbnN0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhY2hlTG9va3VwKHF1YW50aXR5KTtcblxuICAgIC8vIFZhbHVlIGlzIGluIGNhY2hlXG4gICAgaWYgKGNhY2hlZEl0ZW0pIHtcbiAgICAgIHJldHVybiBjYWNoZWRJdGVtO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIGNvbnN0IHRhcmdldFF1YW50aXR5ID0gdGhpcy5ub3JtYWxpemVJbnRlcm5hbChxdWFudGl0eSk7XG5cbiAgICAgIC8vIFVwZGF0ZSBjYWNoZVxuICAgICAgdGhpcy5jYWNoZVVwZGF0ZShxdWFudGl0eSwgdGFyZ2V0UXVhbnRpdHkpO1xuXG4gICAgICByZXR1cm4gdGFyZ2V0UXVhbnRpdHk7XG5cbiAgICB9XG4gIH1cblxuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBub3JtYWxpemVJbnRlcm5hbChxdWFudGl0eTogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG5cbiAgICAvLyBHaXZlbiBxdWFudGl0eSB2YWx1ZSBpbiBiYXNlIHVuaXRcblxuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VW5pdERpbWVuc2lvbihxdWFudGl0eS51bml0KTtcblxuICAgIGlmICghZGltZW5zaW9uKSB7IHJldHVybiBxdWFudGl0eTsgfVxuXG4gICAgY29uc3QgYmFzZVZhbHVlID0gdGhpcy50b0Jhc2VVbml0VmFsdWUocXVhbnRpdHkpO1xuXG4gICAgbGV0IHN1aXRhYmxlVW5pdDogVW5pdEluZm87XG5cbiAgICBjb25zdCBkaW1lbnNpb25Vbml0cyA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VW5pdEluZm9zQnlEaW1lbnNpb24oZGltZW5zaW9uKTtcblxuICAgIGlmIChkaW1lbnNpb25Vbml0cykge1xuXG4gICAgICBjb25zdCBmYWN0b3JTb3J0ZWRVbml0cyA9IGRpbWVuc2lvblVuaXRzLnNvcnQoKGEsIGIpID0+IGIudG9CYXNlRmFjdG9yIC0gYS50b0Jhc2VGYWN0b3IpO1xuXG4gICAgICBmb3IgKGNvbnN0IHVuaXRJbmZvIG9mIGZhY3RvclNvcnRlZFVuaXRzKSB7XG4gICAgICAgIGNvbnN0IHNpZ25lZEJhc2VWYWx1ZSA9ICgoYmFzZVZhbHVlIDwgMCkgPyBiYXNlVmFsdWUgKiAtMSA6IGJhc2VWYWx1ZSk7XG4gICAgICAgIGlmICh1bml0SW5mby50b0Jhc2VGYWN0b3IgPD0gc2lnbmVkQmFzZVZhbHVlKSB7XG4gICAgICAgICAgc3VpdGFibGVVbml0ID0gdW5pdEluZm87XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NvdWxkIG5vdCBmaW5kIERpbWVuc2lvbiBpbmZvIGZvciAnICsgZGltZW5zaW9uICsgJy4gKCcgKyBxdWFudGl0eS51bml0ICsgJyAtLT4gJyArIGRpbWVuc2lvbiArICcpJyk7XG4gICAgfVxuXG4gICAgaWYgKCFzdWl0YWJsZVVuaXQpIHtcbiAgICAgIHJldHVybiBxdWFudGl0eTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50VG9CYXNlID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IocXVhbnRpdHkudW5pdCk7XG5cbiAgICAvLyBFbnN1cmUgd2UgcHJlZmVyIHRoZSBpbml0aWFsIHVuaXQgaWYgdGhlIGFjdHVhbCB2YWx1ZSBpcyBub3QgYWZmZWN0ZWQuXG4gICAgLy8gVGhpcyBoZWxwcyB0byBiZSBjb25zaXN0ZW50IGFuZCBkaXNwbGF5IHRoZSBhY3R1YWwgdW5pdCBpbiByYXJlIGNhc2VzIHdoZW4gbXVsdGlwbGUgdW5pdCBhbHRlcm5hdGl2ZXMgZXhpc3QgKHNhbWUgZmFjdG9yKVxuICAgIGlmIChzdWl0YWJsZVVuaXQudG9CYXNlRmFjdG9yID09PSBjdXJyZW50VG9CYXNlKSB7XG4gICAgICByZXR1cm4gcXVhbnRpdHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb1VuaXQocXVhbnRpdHksIHN1aXRhYmxlVW5pdC51bml0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFF1YW50aXR5SWRlbnRpZmllcihxdWFudGl0eTogUXVhbnRpdHkpOiBzdHJpbmcge1xuICAgIHJldHVybiBxdWFudGl0eS52YWx1ZSArICctJyArIHF1YW50aXR5LnVuaXQ7XG4gIH1cblxufVxuIl19
@@ -18704,6 +18704,19 @@ class ElderQuantityService {
18704
18704
  createDimensions(length, width, height) {
18705
18705
  return Dimensions.from(length.unit, length.value, this.convertToUnit(width, length.unit).value, this.convertToUnit(height, length.unit).value);
18706
18706
  }
18707
+ /**
18708
+ * Returns a copy of the maximum (longest) edge of the dimensions.
18709
+ *
18710
+ * @param dimensions
18711
+ */
18712
+ getMaxEdge(dimensions) {
18713
+ if (!dimensions) {
18714
+ return null;
18715
+ }
18716
+ else {
18717
+ return Quantity.from(dimensions.unit, Math.max(dimensions.width, dimensions.length, dimensions.height));
18718
+ }
18719
+ }
18707
18720
  /***************************************************************************
18708
18721
  * *
18709
18722
  * Constructor *
@@ -18820,6 +18833,26 @@ class ElderQuantityService {
18820
18833
  }
18821
18834
  return Quantity.from(left.unit, left.value - this.convertToUnit(right, left.unit).value);
18822
18835
  }
18836
+ /**
18837
+ * Returns the max quantity of an array of quantities.
18838
+ *
18839
+ * Example:
18840
+ * Quantity(10, 'm'), Quantity(2500, 'cm'), Quantity(0.003, 'km') = Quantity(2500, 'cm')
18841
+ *
18842
+ * @param quantities
18843
+ */
18844
+ max(quantities) {
18845
+ if (!quantities || quantities.length == 0) {
18846
+ return null;
18847
+ }
18848
+ const helpers = quantities
18849
+ .map(quantity => ({
18850
+ original: quantity,
18851
+ baseValue: this.toBaseUnitValue(quantity)
18852
+ }));
18853
+ helpers.sort((a, b) => b.baseValue - a.baseValue);
18854
+ return helpers[0].original;
18855
+ }
18823
18856
  /**
18824
18857
  * Transforms a quantity to another quantity of the same dimension by target-SI
18825
18858
  *