@messaia/cdk 0.0.0-CDK
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/base/base.module.mjs +66 -0
- package/esm2020/lib/base/components/base.component.mjs +441 -0
- package/esm2020/lib/base/components/generic-form-base.component.mjs +602 -0
- package/esm2020/lib/base/components/generic-form.component.mjs +31 -0
- package/esm2020/lib/base/components/generic-list.component.mjs +539 -0
- package/esm2020/lib/base/components/generic-reactive-form.component.mjs +54 -0
- package/esm2020/lib/base/constants/common.mjs +24 -0
- package/esm2020/lib/base/enums/message-type.mjs +7 -0
- package/esm2020/lib/base/helpers/auth-helper.mjs +46 -0
- package/esm2020/lib/base/interceptors/base.interceptor.mjs +138 -0
- package/esm2020/lib/base/interceptors/caching-interceptor.mjs +68 -0
- package/esm2020/lib/base/interceptors/loading.interceptor.mjs +63 -0
- package/esm2020/lib/base/models/auth-user.mjs +3 -0
- package/esm2020/lib/base/public_api.mjs +2 -0
- package/esm2020/lib/base/services/file.service.mjs +18 -0
- package/esm2020/lib/base/services/loading-screen.service.mjs +47 -0
- package/esm2020/lib/base/services/print.service.mjs +40 -0
- package/esm2020/lib/chips/chips.module.mjs +63 -0
- package/esm2020/lib/chips/components/chips.component.mjs +419 -0
- package/esm2020/lib/chips/public_api.mjs +3 -0
- package/esm2020/lib/common/animations/collapse/collapse.animation.mjs +44 -0
- package/esm2020/lib/common/animations/common/interfaces.mjs +2 -0
- package/esm2020/lib/common/behaviors/constructor.mjs +2 -0
- package/esm2020/lib/common/behaviors/control-value-accesor.mixin.mjs +39 -0
- package/esm2020/lib/common/behaviors/disabled.mixin.mjs +24 -0
- package/esm2020/lib/common/common.module.mjs +121 -0
- package/esm2020/lib/common/constants/constants.mjs +2 -0
- package/esm2020/lib/common/directives/disable-control.directive.mjs +34 -0
- package/esm2020/lib/common/enums/salutation.mjs +7 -0
- package/esm2020/lib/common/functions/decorators.mjs +22 -0
- package/esm2020/lib/common/functions/functions.mjs +9 -0
- package/esm2020/lib/common/functions/utils.mjs +161 -0
- package/esm2020/lib/common/helpers/app-storage.mjs +53 -0
- package/esm2020/lib/common/helpers/dynamic-builder.mjs +49 -0
- package/esm2020/lib/common/models/action-menu-item.mjs +12 -0
- package/esm2020/lib/common/models/app-setting.mjs +10 -0
- package/esm2020/lib/common/models/audit-entity.mjs +18 -0
- package/esm2020/lib/common/models/audit-user.mjs +3 -0
- package/esm2020/lib/common/models/base-entity.mjs +18 -0
- package/esm2020/lib/common/models/entity.mjs +2 -0
- package/esm2020/lib/common/models/enum-item.mjs +2 -0
- package/esm2020/lib/common/models/key-value.mjs +3 -0
- package/esm2020/lib/common/models/save-action.mjs +7 -0
- package/esm2020/lib/common/pipes/data-source.pipe.mjs +15 -0
- package/esm2020/lib/common/pipes/enum.pipe.mjs +23 -0
- package/esm2020/lib/common/pipes/file-size.pipe.mjs +37 -0
- package/esm2020/lib/common/pipes/filter.pipe.mjs +23 -0
- package/esm2020/lib/common/pipes/first-letter.mjs +24 -0
- package/esm2020/lib/common/pipes/keys.mjs +18 -0
- package/esm2020/lib/common/pipes/month-name.pipe.mjs +27 -0
- package/esm2020/lib/common/pipes/only-number.mjs +53 -0
- package/esm2020/lib/common/pipes/order.pipe.mjs +183 -0
- package/esm2020/lib/common/pipes/placeholder.pipe.mjs +26 -0
- package/esm2020/lib/common/pipes/safe-html.pipe.mjs +31 -0
- package/esm2020/lib/common/pipes/time.pipe.mjs +20 -0
- package/esm2020/lib/common/pipes/titlecase.pipe.mjs +14 -0
- package/esm2020/lib/common/pipes/truncate.pipe.mjs +15 -0
- package/esm2020/lib/common/pipes/values.mjs +14 -0
- package/esm2020/lib/common/public_api.mjs +18 -0
- package/esm2020/lib/common/services/base.service.mjs +19 -0
- package/esm2020/lib/common/services/context-helper.mjs +4 -0
- package/esm2020/lib/common/services/enum.service.mjs +44 -0
- package/esm2020/lib/common/services/service-locator.mjs +24 -0
- package/esm2020/lib/dialogs/alert-dialog/alert-dialog.component.mjs +31 -0
- package/esm2020/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +37 -0
- package/esm2020/lib/dialogs/dialog.component.mjs +56 -0
- package/esm2020/lib/dialogs/dialogs.module.mjs +82 -0
- package/esm2020/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +40 -0
- package/esm2020/lib/dialogs/public_api.mjs +2 -0
- package/esm2020/lib/dialogs/services/dialog.service.mjs +136 -0
- package/esm2020/lib/file/file-input.component.mjs +327 -0
- package/esm2020/lib/file/file.module.mjs +39 -0
- package/esm2020/lib/file/public_api.mjs +2 -0
- package/esm2020/lib/form-validators/abstract/typed-form.mjs +3 -0
- package/esm2020/lib/form-validators/algorithm/luhn-algorithm.mjs +15 -0
- package/esm2020/lib/form-validators/const/app-validators.const.mjs +68 -0
- package/esm2020/lib/form-validators/const/app.const.mjs +17 -0
- package/esm2020/lib/form-validators/const/config-names.const.mjs +9 -0
- package/esm2020/lib/form-validators/const/config-required-fields.const.mjs +11 -0
- package/esm2020/lib/form-validators/const/decorators.const.mjs +23 -0
- package/esm2020/lib/form-validators/const/events.const.mjs +14 -0
- package/esm2020/lib/form-validators/const/html-elements.const.mjs +7 -0
- package/esm2020/lib/form-validators/const/iban-country-wise-regex.const.mjs +80 -0
- package/esm2020/lib/form-validators/const/index.mjs +6 -0
- package/esm2020/lib/form-validators/const/operators.const.mjs +7 -0
- package/esm2020/lib/form-validators/const/validation-alphabet-locale.const.mjs +9 -0
- package/esm2020/lib/form-validators/const/validator.const.mjs +8 -0
- package/esm2020/lib/form-validators/core/defaultContainer.mjs +243 -0
- package/esm2020/lib/form-validators/core/validator.interface.mjs +2 -0
- package/esm2020/lib/form-validators/core/validator.static.mjs +74 -0
- package/esm2020/lib/form-validators/decorators/allOf.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/alpha.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/alphaNumeric.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/and.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/ascii.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/async.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/base-decorator.function.mjs +7 -0
- package/esm2020/lib/form-validators/decorators/choice.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/compare.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/compose.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/contains.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/credit-card.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/cusip.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/custom.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/dataUri.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/date.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/different.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/digit.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/email.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/endsWith.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/even.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/extension.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/factor.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/file.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/fileSize.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/greater-than.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/grid.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/hexColor.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/image.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/index.mjs +91 -0
- package/esm2020/lib/form-validators/decorators/json.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/latLong.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/latitude.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/leapYear.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/less-than.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/longitude.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/lowercase.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/mac.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/mask.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/maxDate.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/maxLength.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/maxNumber.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/maxTime.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/minDate.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/minLength.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/minNumber.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/minTime.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/model.decorator.mjs +7 -0
- package/esm2020/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/noneOf.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/not.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/notEmpty.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/numeric.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/odd.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/oneOf.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/or.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/password.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/pattern.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/port.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/primeNumber.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/prop-array.decorator.mjs +18 -0
- package/esm2020/lib/form-validators/decorators/prop-object.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/prop.decorator.mjs +16 -0
- package/esm2020/lib/form-validators/decorators/range.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/required.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/requiredTrue.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/rule.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/escape.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/toString.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/trim.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +8 -0
- package/esm2020/lib/form-validators/decorators/startsWith.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/time.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/decorators/unique.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/uppercase.decorator.mjs +6 -0
- package/esm2020/lib/form-validators/decorators/url.decorator.mjs +10 -0
- package/esm2020/lib/form-validators/directives/base-directive.mjs +43 -0
- package/esm2020/lib/form-validators/directives/control-host.directive.mjs +34 -0
- package/esm2020/lib/form-validators/directives/html-control-template.directive.mjs +20 -0
- package/esm2020/lib/form-validators/directives/rx-form.directive.mjs +134 -0
- package/esm2020/lib/form-validators/directives/template-validations/async-validation.directive.mjs +31 -0
- package/esm2020/lib/form-validators/directives/template-validations/base-validator.directive.mjs +42 -0
- package/esm2020/lib/form-validators/directives/template-validations/control-expression-process.mjs +26 -0
- package/esm2020/lib/form-validators/directives/template-validations/file-control.directive.mjs +91 -0
- package/esm2020/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +50 -0
- package/esm2020/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +277 -0
- package/esm2020/lib/form-validators/domain/disable-provider.mjs +93 -0
- package/esm2020/lib/form-validators/domain/element-processor/decimal.provider.mjs +59 -0
- package/esm2020/lib/form-validators/domain/element-processor/mask.provider.mjs +430 -0
- package/esm2020/lib/form-validators/domain/form-data.mjs +47 -0
- package/esm2020/lib/form-validators/enums/error-message-binding-strategy.mjs +11 -0
- package/esm2020/lib/form-validators/enums/index.mjs +5 -0
- package/esm2020/lib/form-validators/enums/ip-version.mjs +7 -0
- package/esm2020/lib/form-validators/enums/numeric-value-type.mjs +7 -0
- package/esm2020/lib/form-validators/enums/reset-type.mjs +10 -0
- package/esm2020/lib/form-validators/enums/url-validation-type.mjs +7 -0
- package/esm2020/lib/form-validators/models/config/alpha-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/array-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/base-config-fn.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/base-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/base-date-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/choice-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/compare-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/component-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/compose-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/contains-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/credit-card-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/custom-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/date-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/default-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/digit-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/disable-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/element-class-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/email-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/error-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/extension-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/factor-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/field-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/file-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/hex-color-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/iban-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/image-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/index.mjs +35 -0
- package/esm2020/lib/form-validators/models/config/ip-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/logical-operator-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/mask-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/max-date-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/message-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/min-date-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/model-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/number-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/numeric-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/password-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/pattern-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/prop-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/props-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/range-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/relational-operator-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/required-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/rule-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/sanitize-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/size-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/string-comparison-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/time-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/todate-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/unique-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/config/url-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/form-builder-configuration.mjs +8 -0
- package/esm2020/lib/form-validators/models/index.mjs +3 -0
- package/esm2020/lib/form-validators/models/interface/array-prop-instance-config.interface.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/auto-instance-config.interface.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/form-data-config.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/i-abstract-control.mjs +4 -0
- package/esm2020/lib/form-validators/models/interface/i-form-group.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/instance-argument.interface.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/object-prop-instance-config.interface.mjs +2 -0
- package/esm2020/lib/form-validators/models/interface/options.mjs +2 -0
- package/esm2020/lib/form-validators/models/password-validation.model.mjs +2 -0
- package/esm2020/lib/form-validators/models/prop-validation-config.mjs +2 -0
- package/esm2020/lib/form-validators/public_api.mjs +25 -0
- package/esm2020/lib/form-validators/reactive-form-validators/allOf.validator.mjs +22 -0
- package/esm2020/lib/form-validators/reactive-form-validators/alpha.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/and.validator.mjs +23 -0
- package/esm2020/lib/form-validators/reactive-form-validators/ascii.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/async/base.async.validator.mjs +24 -0
- package/esm2020/lib/form-validators/reactive-form-validators/choice.validator.mjs +19 -0
- package/esm2020/lib/form-validators/reactive-form-validators/compare.validator.mjs +20 -0
- package/esm2020/lib/form-validators/reactive-form-validators/compose.validator.mjs +23 -0
- package/esm2020/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +63 -0
- package/esm2020/lib/form-validators/reactive-form-validators/contains.validator.mjs +15 -0
- package/esm2020/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +48 -0
- package/esm2020/lib/form-validators/reactive-form-validators/cusip.validator.mjs +38 -0
- package/esm2020/lib/form-validators/reactive-form-validators/custom.validator.mjs +23 -0
- package/esm2020/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/date.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/different.validator.mjs +19 -0
- package/esm2020/lib/form-validators/reactive-form-validators/digit.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/email.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/even.validator.mjs +15 -0
- package/esm2020/lib/form-validators/reactive-form-validators/extension.validator.mjs +40 -0
- package/esm2020/lib/form-validators/reactive-form-validators/factor.validator.mjs +37 -0
- package/esm2020/lib/form-validators/reactive-form-validators/file.validator.mjs +26 -0
- package/esm2020/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +32 -0
- package/esm2020/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/grid.validator.mjs +31 -0
- package/esm2020/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/iban.validator.mjs +30 -0
- package/esm2020/lib/form-validators/reactive-form-validators/image.validator.mjs +48 -0
- package/esm2020/lib/form-validators/reactive-form-validators/index.mjs +66 -0
- package/esm2020/lib/form-validators/reactive-form-validators/ip.validator.mjs +35 -0
- package/esm2020/lib/form-validators/reactive-form-validators/json.validator.mjs +26 -0
- package/esm2020/lib/form-validators/reactive-form-validators/latLong.validator.mjs +18 -0
- package/esm2020/lib/form-validators/reactive-form-validators/latitude.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/less-than.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/longitude.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +15 -0
- package/esm2020/lib/form-validators/reactive-form-validators/mac.validator.mjs +9 -0
- package/esm2020/lib/form-validators/reactive-form-validators/mask.validator.mjs +13 -0
- package/esm2020/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/minDate.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/minLength.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/minTime.validator.mjs +8 -0
- package/esm2020/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +24 -0
- package/esm2020/lib/form-validators/reactive-form-validators/not.validator.mjs +23 -0
- package/esm2020/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +17 -0
- package/esm2020/lib/form-validators/reactive-form-validators/numeric.validator.mjs +20 -0
- package/esm2020/lib/form-validators/reactive-form-validators/odd.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +22 -0
- package/esm2020/lib/form-validators/reactive-form-validators/or.validator.mjs +23 -0
- package/esm2020/lib/form-validators/reactive-form-validators/password.validator.mjs +33 -0
- package/esm2020/lib/form-validators/reactive-form-validators/pattern.validator.mjs +17 -0
- package/esm2020/lib/form-validators/reactive-form-validators/port.validator.mjs +18 -0
- package/esm2020/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +26 -0
- package/esm2020/lib/form-validators/reactive-form-validators/range.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/required.validator.mjs +17 -0
- package/esm2020/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/rule.validator.mjs +20 -0
- package/esm2020/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +16 -0
- package/esm2020/lib/form-validators/reactive-form-validators/time.validator.mjs +18 -0
- package/esm2020/lib/form-validators/reactive-form-validators/unique.validator.mjs +70 -0
- package/esm2020/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +15 -0
- package/esm2020/lib/form-validators/reactive-form-validators/url.validator.mjs +28 -0
- package/esm2020/lib/form-validators/services/base-form-builder.mjs +115 -0
- package/esm2020/lib/form-validators/services/entity.service.mjs +64 -0
- package/esm2020/lib/form-validators/services/form-control.mjs +349 -0
- package/esm2020/lib/form-validators/services/form-group.mjs +2 -0
- package/esm2020/lib/form-validators/services/reactive-form.module.mjs +52 -0
- package/esm2020/lib/form-validators/services/rx-form-array.mjs +100 -0
- package/esm2020/lib/form-validators/services/rx-form-builder.mjs +559 -0
- package/esm2020/lib/form-validators/services/rx-form-group.mjs +299 -0
- package/esm2020/lib/form-validators/services/typed-form-builder.mjs +23 -0
- package/esm2020/lib/form-validators/util/alphabet-regex.locale.mjs +29 -0
- package/esm2020/lib/form-validators/util/app-util.mjs +141 -0
- package/esm2020/lib/form-validators/util/check-length.mjs +10 -0
- package/esm2020/lib/form-validators/util/config-provider.mjs +35 -0
- package/esm2020/lib/form-validators/util/date-checker.function.mjs +52 -0
- package/esm2020/lib/form-validators/util/date-provider.mjs +97 -0
- package/esm2020/lib/form-validators/util/form-const.mjs +3 -0
- package/esm2020/lib/form-validators/util/form-provider.mjs +37 -0
- package/esm2020/lib/form-validators/util/index.mjs +7 -0
- package/esm2020/lib/form-validators/util/instance-provider.function.mjs +30 -0
- package/esm2020/lib/form-validators/util/ip-checker.mjs +18 -0
- package/esm2020/lib/form-validators/util/linq.mjs +147 -0
- package/esm2020/lib/form-validators/util/object-maker.mjs +38 -0
- package/esm2020/lib/form-validators/util/reactive-form-config.mjs +23 -0
- package/esm2020/lib/form-validators/util/regex-rules.mjs +37 -0
- package/esm2020/lib/form-validators/util/regex-validator.mjs +74 -0
- package/esm2020/lib/form-validators/util/relational-checker.function.mjs +85 -0
- package/esm2020/lib/form-validators/util/reset-form.mjs +56 -0
- package/esm2020/lib/form-validators/util/sanitizers.mjs +131 -0
- package/esm2020/lib/form-validators/util/time-checker.function.mjs +48 -0
- package/esm2020/lib/form-validators/util/type.mjs +2 -0
- package/esm2020/lib/form-validators/util/validator-value-checker.mjs +17 -0
- package/esm2020/lib/form-validators/validators-extension/allOf-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/alpha-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/and-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/ascii-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/base-validator.function.mjs +33 -0
- package/esm2020/lib/form-validators/validators-extension/choice-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/compare-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/compose-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/contains-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/cusip-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/custom-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/date-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/different-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/digit-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/email-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/even-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/extension-validator.extension.mjs +10 -0
- package/esm2020/lib/form-validators/validators-extension/factor-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/file-validator.extension.mjs +10 -0
- package/esm2020/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +10 -0
- package/esm2020/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/grid-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/iban-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/image-validator.extension.mjs +10 -0
- package/esm2020/lib/form-validators/validators-extension/index.mjs +68 -0
- package/esm2020/lib/form-validators/validators-extension/ip-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/json-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/latLong-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/latitude-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/less-than-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/longitude-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/mac-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/mask-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/minDate-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/minLength-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/minTime-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/not-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/numeric-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/odd-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/or-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/password-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/pattern-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/port-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/range-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/required-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/rxweb-validators.mjs +108 -0
- package/esm2020/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/time-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-extension/unique-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +7 -0
- package/esm2020/lib/form-validators/validators-extension/url-validator.extension.mjs +11 -0
- package/esm2020/lib/form-validators/validators-function/alpha-validation.function.mjs +37 -0
- package/esm2020/lib/form-validators/validators-function/regex-validation.function.mjs +16 -0
- package/esm2020/lib/forms/components/generic-form/generic-form.component.mjs +131 -0
- package/esm2020/lib/forms/constants/constants.mjs +2 -0
- package/esm2020/lib/forms/directives/mat-form-field-editor.directive.mjs +162 -0
- package/esm2020/lib/forms/directives/mat-form-field-readonly.directive.mjs +33 -0
- package/esm2020/lib/forms/enums/form-field-type.mjs +19 -0
- package/esm2020/lib/forms/forms.module.mjs +125 -0
- package/esm2020/lib/forms/functions/decorators.mjs +127 -0
- package/esm2020/lib/forms/functions/functions.mjs +10 -0
- package/esm2020/lib/forms/helpers/abstract-mat-form-field.mjs +251 -0
- package/esm2020/lib/forms/helpers/value-accessor-base.mjs +141 -0
- package/esm2020/lib/forms/models/form-field-definition.mjs +18 -0
- package/esm2020/lib/forms/models/form-field-group.mjs +11 -0
- package/esm2020/lib/forms/public_api.mjs +4 -0
- package/esm2020/lib/forms/validators/equal-validator.directive.mjs +79 -0
- package/esm2020/lib/forms/validators/native-element-injector.directive.mjs +32 -0
- package/esm2020/lib/forms/validators/unique-validator-directive.mjs +75 -0
- package/esm2020/lib/http/http.module.mjs +20 -0
- package/esm2020/lib/http/public_api.mjs +2 -0
- package/esm2020/lib/http/services/generic.service.mjs +319 -0
- package/esm2020/lib/layout/form-toolbar/form-toolbar.component.mjs +30 -0
- package/esm2020/lib/layout/form-toolbar-menu/form-toolbar-menu.component.mjs +17 -0
- package/esm2020/lib/layout/layout-card-over/layout-card-over.component.mjs +43 -0
- package/esm2020/lib/layout/layout-footer/layout-footer.component.mjs +34 -0
- package/esm2020/lib/layout/layout-manage-list/layout-manage-list.component.mjs +130 -0
- package/esm2020/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +108 -0
- package/esm2020/lib/layout/layout-nav/layout-nav.component.mjs +95 -0
- package/esm2020/lib/layout/layout-nav-list/layout-nav-list.component.mjs +123 -0
- package/esm2020/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +81 -0
- package/esm2020/lib/layout/layout-toggle.class.mjs +71 -0
- package/esm2020/lib/layout/layout.component.mjs +82 -0
- package/esm2020/lib/layout/layout.directives.mjs +81 -0
- package/esm2020/lib/layout/layout.module.mjs +146 -0
- package/esm2020/lib/layout/list-toolbar/list-toolbar.component.mjs +23 -0
- package/esm2020/lib/layout/list-toolbar-menu/list-toolbar-menu.component.mjs +17 -0
- package/esm2020/lib/layout/navigation-drawer/navigation-drawer.component.mjs +167 -0
- package/esm2020/lib/layout/public_api.mjs +2 -0
- package/esm2020/lib/media/directives/media-toggle.directive.mjs +115 -0
- package/esm2020/lib/media/media.module.mjs +37 -0
- package/esm2020/lib/media/public_api.mjs +2 -0
- package/esm2020/lib/media/services/media.service.mjs +108 -0
- package/esm2020/lib/menu/components/menu.component.mjs +52 -0
- package/esm2020/lib/menu/enums/menu-scope.mjs +6 -0
- package/esm2020/lib/menu/menu.module.mjs +50 -0
- package/esm2020/lib/menu/models/menu-item.mjs +3 -0
- package/esm2020/lib/menu/models/menu.mjs +3 -0
- package/esm2020/lib/menu/public_api.mjs +2 -0
- package/esm2020/lib/menu/services/menu-items.service.mjs +19 -0
- package/esm2020/lib/menu/services/menu.resolve.mjs +62 -0
- package/esm2020/lib/menu/services/menu.service.mjs +19 -0
- package/esm2020/lib/search/public_api.mjs +2 -0
- package/esm2020/lib/search/search.module.mjs +47 -0
- package/esm2020/lib/search/vd-search-box/vd-search-box.component.mjs +143 -0
- package/esm2020/lib/search/vd-search-input/vd-search-input.component.mjs +148 -0
- package/esm2020/lib/select/public_api.mjs +3 -0
- package/esm2020/lib/select/select.component.mjs +407 -0
- package/esm2020/lib/select/select.module.mjs +45 -0
- package/esm2020/lib/table/components/dynamic-table/dynamic-table.component.mjs +349 -0
- package/esm2020/lib/table/components/filter-clear.component.mjs +44 -0
- package/esm2020/lib/table/components/filter-date.component.mjs +151 -0
- package/esm2020/lib/table/components/filter-input.component.mjs +198 -0
- package/esm2020/lib/table/components/filter-select.component.mjs +334 -0
- package/esm2020/lib/table/directives/data-source-filter.directive.mjs +45 -0
- package/esm2020/lib/table/enums/table-column-type.mjs +14 -0
- package/esm2020/lib/table/functions/decorators.mjs +135 -0
- package/esm2020/lib/table/functions/functions.mjs +15 -0
- package/esm2020/lib/table/models/pagination.mjs +3 -0
- package/esm2020/lib/table/models/table-column.mjs +10 -0
- package/esm2020/lib/table/models/table-definition.mjs +17 -0
- package/esm2020/lib/table/models/table-menu-item.mjs +12 -0
- package/esm2020/lib/table/paginator-intl.mjs +44 -0
- package/esm2020/lib/table/public_api.mjs +3 -0
- package/esm2020/lib/table/table.data-source.mjs +212 -0
- package/esm2020/lib/table/table.module.mjs +139 -0
- package/esm2020/lib/table/table.static-data-source.mjs +131 -0
- package/esm2020/messaia-cdk.mjs +5 -0
- package/esm2020/public_api.mjs +18 -0
- package/fesm2015/messaia-cdk.mjs +16621 -0
- package/fesm2015/messaia-cdk.mjs.map +1 -0
- package/fesm2020/messaia-cdk.mjs +16538 -0
- package/fesm2020/messaia-cdk.mjs.map +1 -0
- package/lib/base/base.module.d.ts +25 -0
- package/lib/base/components/base.component.d.ts +258 -0
- package/lib/base/components/generic-form-base.component.d.ts +310 -0
- package/lib/base/components/generic-form.component.d.ts +32 -0
- package/lib/base/components/generic-list.component.d.ts +273 -0
- package/lib/base/components/generic-reactive-form.component.d.ts +47 -0
- package/lib/base/constants/common.d.ts +9 -0
- package/lib/base/enums/message-type.d.ts +5 -0
- package/lib/base/helpers/auth-helper.d.ts +26 -0
- package/lib/base/interceptors/base.interceptor.d.ts +40 -0
- package/lib/base/interceptors/caching-interceptor.d.ts +35 -0
- package/lib/base/interceptors/loading.interceptor.d.ts +30 -0
- package/lib/base/models/auth-user.d.ts +15 -0
- package/lib/base/public_api.d.ts +1 -0
- package/lib/base/services/file.service.d.ts +10 -0
- package/lib/base/services/loading-screen.service.d.ts +30 -0
- package/lib/base/services/print.service.d.ts +23 -0
- package/lib/chips/chips.module.d.ts +15 -0
- package/lib/chips/components/chips.component.d.ts +223 -0
- package/lib/chips/public_api.d.ts +2 -0
- package/lib/common/animations/collapse/collapse.animation.d.ts +21 -0
- package/lib/common/animations/common/interfaces.d.ts +5 -0
- package/lib/common/behaviors/constructor.d.ts +1 -0
- package/lib/common/behaviors/control-value-accesor.mixin.d.ts +16 -0
- package/lib/common/behaviors/disabled.mixin.d.ts +8 -0
- package/lib/common/common.module.d.ts +53 -0
- package/lib/common/constants/constants.d.ts +1 -0
- package/lib/common/directives/disable-control.directive.d.ts +16 -0
- package/lib/common/enums/salutation.d.ts +5 -0
- package/lib/common/functions/decorators.d.ts +12 -0
- package/lib/common/functions/functions.d.ts +6 -0
- package/lib/common/functions/utils.d.ts +73 -0
- package/lib/common/helpers/app-storage.d.ts +32 -0
- package/lib/common/helpers/dynamic-builder.d.ts +19 -0
- package/lib/common/models/action-menu-item.d.ts +15 -0
- package/lib/common/models/app-setting.d.ts +17 -0
- package/lib/common/models/audit-entity.d.ts +12 -0
- package/lib/common/models/audit-user.d.ts +5 -0
- package/lib/common/models/base-entity.d.ts +10 -0
- package/lib/common/models/entity.d.ts +3 -0
- package/lib/common/models/enum-item.d.ts +4 -0
- package/lib/common/models/key-value.d.ts +4 -0
- package/lib/common/models/save-action.d.ts +5 -0
- package/lib/common/pipes/data-source.pipe.d.ts +7 -0
- package/lib/common/pipes/enum.pipe.d.ts +12 -0
- package/lib/common/pipes/file-size.pipe.d.ts +13 -0
- package/lib/common/pipes/filter.pipe.d.ts +13 -0
- package/lib/common/pipes/first-letter.d.ts +12 -0
- package/lib/common/pipes/keys.d.ts +7 -0
- package/lib/common/pipes/month-name.pipe.d.ts +15 -0
- package/lib/common/pipes/only-number.d.ts +21 -0
- package/lib/common/pipes/order.pipe.d.ts +77 -0
- package/lib/common/pipes/placeholder.pipe.d.ts +13 -0
- package/lib/common/pipes/safe-html.pipe.d.ts +22 -0
- package/lib/common/pipes/time.pipe.d.ts +7 -0
- package/lib/common/pipes/titlecase.pipe.d.ts +7 -0
- package/lib/common/pipes/truncate.pipe.d.ts +7 -0
- package/lib/common/pipes/values.d.ts +7 -0
- package/lib/common/public_api.d.ts +17 -0
- package/lib/common/services/base.service.d.ts +10 -0
- package/lib/common/services/context-helper.d.ts +17 -0
- package/lib/common/services/enum.service.d.ts +23 -0
- package/lib/common/services/service-locator.d.ts +19 -0
- package/lib/common/styles/_common-theme.scss +27 -0
- package/lib/common/styles/_elevation.scss +147 -0
- package/lib/common/styles/_layout.scss +588 -0
- package/lib/common/styles/_rtl.scss +28 -0
- package/lib/common/styles/_styles.scss +12 -0
- package/lib/common/styles/_theme-functions.scss +27 -0
- package/lib/common/styles/_typography-functions.scss +35 -0
- package/lib/common/styles/_typography.scss +76 -0
- package/lib/common/styles/_variables.scss +98 -0
- package/lib/common/styles/colors/_colors-dark.scss +388 -0
- package/lib/common/styles/colors/_colors-light.scss +904 -0
- package/lib/common/styles/colors/_colors.scss +7 -0
- package/lib/common/styles/core/_button.scss +59 -0
- package/lib/common/styles/core/_card.scss +160 -0
- package/lib/common/styles/core/_content.scss +42 -0
- package/lib/common/styles/core/_core.scss +23 -0
- package/lib/common/styles/core/_divider.scss +14 -0
- package/lib/common/styles/core/_icons.scss +26 -0
- package/lib/common/styles/core/_list.scss +8 -0
- package/lib/common/styles/core/_sidenav.scss +20 -0
- package/lib/common/styles/core/_structure.scss +126 -0
- package/lib/common/styles/core/_toolbar.scss +31 -0
- package/lib/common/styles/core/_whiteframe.scss +111 -0
- package/lib/common/styles/font/_font.scss +92 -0
- package/lib/common/styles/material-icons.scss +3 -0
- package/lib/common/styles/platform.scss +11 -0
- package/lib/common/styles/utilities/_general.scss +81 -0
- package/lib/common/styles/utilities/_pad.scss +36 -0
- package/lib/common/styles/utilities/_pull.scss +36 -0
- package/lib/common/styles/utilities/_push.scss +36 -0
- package/lib/common/styles/utilities/_size.scss +24 -0
- package/lib/common/styles/utilities/_text.scss +87 -0
- package/lib/common/styles/utilities/_utilities.scss +15 -0
- package/lib/common/theming/_all-theme.scss +14 -0
- package/lib/common/typography/_all-typography.scss +33 -0
- package/lib/dialogs/alert-dialog/alert-dialog.component.d.ts +20 -0
- package/lib/dialogs/confirm-dialog/confirm-dialog.component.d.ts +24 -0
- package/lib/dialogs/dialog.component.d.ts +23 -0
- package/lib/dialogs/dialogs.module.d.ts +21 -0
- package/lib/dialogs/prompt-dialog/prompt-dialog.component.d.ts +25 -0
- package/lib/dialogs/public_api.d.ts +1 -0
- package/lib/dialogs/services/dialog.service.d.ts +96 -0
- package/lib/file/file-input.component.d.ts +191 -0
- package/lib/file/file.module.d.ts +13 -0
- package/lib/file/public_api.d.ts +1 -0
- package/lib/form-validators/abstract/typed-form.d.ts +4 -0
- package/lib/form-validators/algorithm/luhn-algorithm.d.ts +1 -0
- package/lib/form-validators/const/app-validators.const.d.ts +3 -0
- package/lib/form-validators/const/app.const.d.ts +16 -0
- package/lib/form-validators/const/config-names.const.d.ts +8 -0
- package/lib/form-validators/const/config-required-fields.const.d.ts +3 -0
- package/lib/form-validators/const/decorators.const.d.ts +3 -0
- package/lib/form-validators/const/events.const.d.ts +13 -0
- package/lib/form-validators/const/html-elements.const.d.ts +6 -0
- package/lib/form-validators/const/iban-country-wise-regex.const.d.ts +79 -0
- package/lib/form-validators/const/index.d.ts +5 -0
- package/lib/form-validators/const/operators.const.d.ts +3 -0
- package/lib/form-validators/const/validation-alphabet-locale.const.d.ts +3 -0
- package/lib/form-validators/const/validator.const.d.ts +7 -0
- package/lib/form-validators/core/defaultContainer.d.ts +19 -0
- package/lib/form-validators/core/validator.interface.d.ts +61 -0
- package/lib/form-validators/core/validator.static.d.ts +3 -0
- package/lib/form-validators/decorators/allOf.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/alpha.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/alphaNumeric.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/and.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/ascii.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/async.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/base-decorator.function.d.ts +1 -0
- package/lib/form-validators/decorators/choice.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/compare.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/compose.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/contains.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/credit-card.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/cusip.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/custom.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/dataUri.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/date.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/different.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/digit.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/email.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/endsWith.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/even.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/extension.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/factor.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/file.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/fileSize.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/greater-than-equal-to.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/greater-than.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/grid.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/hexColor.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/image.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/index.d.ts +90 -0
- package/lib/form-validators/decorators/json.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/latLong.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/latitude.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/leapYear.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/less-than-equal-to.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/less-than.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/longitude.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/lowercase.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/mac.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/mask.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/maxDate.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/maxLength.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/maxNumber.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/maxTime.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/minDate.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/minLength.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/minNumber.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/minTime.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/model.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/non-validation-decorators/disable.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/non-validation-decorators/error.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/noneOf.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/not.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/notEmpty.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/numeric.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/odd.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/oneOf.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/or.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/password.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/pattern.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/port.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/primeNumber.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/prop-array.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/prop-object.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/prop.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/range.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/required.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/requiredTrue.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/rule.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/sanitize/blacklist.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/escape.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/ltrim.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/prefix.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/rtrim.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/sanitize.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/sanitize/stripLow.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/suffix.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/toBoolean.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/toDate.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/sanitize/toDouble.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/toFloat.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/toInt.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/toString.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/trim.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/sanitize/whitelist.decorator.d.ts +1 -0
- package/lib/form-validators/decorators/startsWith.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/time.decorator.d.ts +3 -0
- package/lib/form-validators/decorators/unique.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/uppercase.decorator.d.ts +2 -0
- package/lib/form-validators/decorators/url.decorator.d.ts +3 -0
- package/lib/form-validators/directives/base-directive.d.ts +8 -0
- package/lib/form-validators/directives/control-host.directive.d.ts +11 -0
- package/lib/form-validators/directives/html-control-template.directive.d.ts +9 -0
- package/lib/form-validators/directives/rx-form.directive.d.ts +18 -0
- package/lib/form-validators/directives/template-validations/async-validation.directive.d.ts +9 -0
- package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +17 -0
- package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +18 -0
- package/lib/form-validators/directives/template-validations/file-control.directive.d.ts +29 -0
- package/lib/form-validators/directives/template-validations/image-file-control.directive.d.ts +17 -0
- package/lib/form-validators/directives/template-validations/rxformcontrol.directive.d.ts +89 -0
- package/lib/form-validators/domain/disable-provider.d.ts +15 -0
- package/lib/form-validators/domain/element-processor/decimal.provider.d.ts +17 -0
- package/lib/form-validators/domain/element-processor/mask.provider.d.ts +63 -0
- package/lib/form-validators/domain/form-data.d.ts +10 -0
- package/lib/form-validators/enums/error-message-binding-strategy.d.ts +9 -0
- package/lib/form-validators/enums/index.d.ts +4 -0
- package/lib/form-validators/enums/ip-version.d.ts +5 -0
- package/lib/form-validators/enums/numeric-value-type.d.ts +5 -0
- package/lib/form-validators/enums/reset-type.d.ts +8 -0
- package/lib/form-validators/enums/url-validation-type.d.ts +5 -0
- package/lib/form-validators/models/config/alpha-config.d.ts +5 -0
- package/lib/form-validators/models/config/array-config.d.ts +4 -0
- package/lib/form-validators/models/config/base-config-fn.d.ts +10 -0
- package/lib/form-validators/models/config/base-config.d.ts +7 -0
- package/lib/form-validators/models/config/base-date-config.d.ts +4 -0
- package/lib/form-validators/models/config/choice-config.d.ts +5 -0
- package/lib/form-validators/models/config/compare-config.d.ts +5 -0
- package/lib/form-validators/models/config/component-config.d.ts +3 -0
- package/lib/form-validators/models/config/compose-config.d.ts +5 -0
- package/lib/form-validators/models/config/contains-config.d.ts +4 -0
- package/lib/form-validators/models/config/credit-card-config.d.ts +5 -0
- package/lib/form-validators/models/config/custom-config.d.ts +5 -0
- package/lib/form-validators/models/config/date-config.d.ts +6 -0
- package/lib/form-validators/models/config/default-config.d.ts +4 -0
- package/lib/form-validators/models/config/digit-config.d.ts +3 -0
- package/lib/form-validators/models/config/disable-config.d.ts +3 -0
- package/lib/form-validators/models/config/element-class-config.d.ts +3 -0
- package/lib/form-validators/models/config/email-config.d.ts +3 -0
- package/lib/form-validators/models/config/error-config.d.ts +3 -0
- package/lib/form-validators/models/config/extension-config.d.ts +5 -0
- package/lib/form-validators/models/config/factor-config.d.ts +5 -0
- package/lib/form-validators/models/config/field-config.d.ts +4 -0
- package/lib/form-validators/models/config/file-config.d.ts +5 -0
- package/lib/form-validators/models/config/hex-color-config.d.ts +4 -0
- package/lib/form-validators/models/config/iban-config.d.ts +4 -0
- package/lib/form-validators/models/config/image-config.d.ts +7 -0
- package/lib/form-validators/models/config/index.d.ts +34 -0
- package/lib/form-validators/models/config/ip-config.d.ts +6 -0
- package/lib/form-validators/models/config/logical-operator-config.d.ts +5 -0
- package/lib/form-validators/models/config/mask-config.d.ts +6 -0
- package/lib/form-validators/models/config/max-date-config.d.ts +4 -0
- package/lib/form-validators/models/config/message-config.d.ts +3 -0
- package/lib/form-validators/models/config/min-date-config.d.ts +4 -0
- package/lib/form-validators/models/config/model-config.d.ts +4 -0
- package/lib/form-validators/models/config/number-config.d.ts +4 -0
- package/lib/form-validators/models/config/numeric-config.d.ts +8 -0
- package/lib/form-validators/models/config/password-config.d.ts +13 -0
- package/lib/form-validators/models/config/pattern-config.d.ts +6 -0
- package/lib/form-validators/models/config/prop-config.d.ts +14 -0
- package/lib/form-validators/models/config/props-config.d.ts +12 -0
- package/lib/form-validators/models/config/range-config.d.ts +5 -0
- package/lib/form-validators/models/config/relational-operator-config.d.ts +6 -0
- package/lib/form-validators/models/config/required-config.d.ts +3 -0
- package/lib/form-validators/models/config/rule-config.d.ts +4 -0
- package/lib/form-validators/models/config/sanitize-config.d.ts +3 -0
- package/lib/form-validators/models/config/size-config.d.ts +5 -0
- package/lib/form-validators/models/config/string-comparison-config.d.ts +4 -0
- package/lib/form-validators/models/config/time-config.d.ts +15 -0
- package/lib/form-validators/models/config/todate-config.d.ts +3 -0
- package/lib/form-validators/models/config/unique-config.d.ts +4 -0
- package/lib/form-validators/models/config/url-config.d.ts +5 -0
- package/lib/form-validators/models/form-builder-configuration.d.ts +28 -0
- package/lib/form-validators/models/index.d.ts +2 -0
- package/lib/form-validators/models/interface/array-prop-instance-config.interface.d.ts +5 -0
- package/lib/form-validators/models/interface/auto-instance-config.interface.d.ts +7 -0
- package/lib/form-validators/models/interface/form-data-config.d.ts +3 -0
- package/lib/form-validators/models/interface/i-abstract-control.d.ts +15 -0
- package/lib/form-validators/models/interface/i-form-group.d.ts +37 -0
- package/lib/form-validators/models/interface/instance-argument.interface.d.ts +3 -0
- package/lib/form-validators/models/interface/object-prop-instance-config.interface.d.ts +4 -0
- package/lib/form-validators/models/interface/options.d.ts +9 -0
- package/lib/form-validators/models/password-validation.model.d.ts +20 -0
- package/lib/form-validators/models/prop-validation-config.d.ts +78 -0
- package/lib/form-validators/public_api.d.ts +24 -0
- package/lib/form-validators/reactive-form-validators/allOf.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/alpha.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/alphaNumeric.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/and.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/ascii.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/async/base.async.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/choice.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/compare.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/compose.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/conditional-change.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/contains.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/credit-card.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/cusip.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/custom.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/dataUri.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/date.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/different.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/digit.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/email.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/endsWith.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/even.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/extension.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/factor.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/file.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/fileSize.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/greater-than.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/grid.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/hexcolor.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/iban.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/image.validator.d.ts +2 -0
- package/lib/form-validators/reactive-form-validators/index.d.ts +65 -0
- package/lib/form-validators/reactive-form-validators/ip.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/json.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/latLong.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/latitude.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/leapYear.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/less-than.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/longitude.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/lowercase.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/mac.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/mask.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/maxDate.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/maxLength.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/maxNumber.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/maxTime.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/minDate.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/minLength.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/minNumber.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/minTime.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/noneOf.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/not.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/notEmpty.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/numeric.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/odd.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/oneOf.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/or.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/password.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/pattern.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/port.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/primeNumber.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/range.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/required.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/requiredTrue.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/rule.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/startsWith.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/time.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/unique.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/uppercase.validator.d.ts +3 -0
- package/lib/form-validators/reactive-form-validators/url.validator.d.ts +3 -0
- package/lib/form-validators/services/base-form-builder.d.ts +13 -0
- package/lib/form-validators/services/entity.service.d.ts +15 -0
- package/lib/form-validators/services/form-control.d.ts +99 -0
- package/lib/form-validators/services/form-group.d.ts +9 -0
- package/lib/form-validators/services/reactive-form.module.d.ts +24 -0
- package/lib/form-validators/services/rx-form-array.d.ts +38 -0
- package/lib/form-validators/services/rx-form-builder.d.ts +54 -0
- package/lib/form-validators/services/rx-form-group.d.ts +66 -0
- package/lib/form-validators/services/typed-form-builder.d.ts +14 -0
- package/lib/form-validators/util/alphabet-regex.locale.d.ts +28 -0
- package/lib/form-validators/util/app-util.d.ts +28 -0
- package/lib/form-validators/util/check-length.d.ts +1 -0
- package/lib/form-validators/util/config-provider.d.ts +1 -0
- package/lib/form-validators/util/date-checker.function.d.ts +7 -0
- package/lib/form-validators/util/date-provider.d.ts +9 -0
- package/lib/form-validators/util/form-const.d.ts +2 -0
- package/lib/form-validators/util/form-provider.d.ts +8 -0
- package/lib/form-validators/util/index.d.ts +6 -0
- package/lib/form-validators/util/instance-provider.function.d.ts +3 -0
- package/lib/form-validators/util/ip-checker.d.ts +2 -0
- package/lib/form-validators/util/linq.d.ts +15 -0
- package/lib/form-validators/util/object-maker.d.ts +7 -0
- package/lib/form-validators/util/reactive-form-config.d.ts +17 -0
- package/lib/form-validators/util/regex-rules.d.ts +3 -0
- package/lib/form-validators/util/regex-validator.d.ts +11 -0
- package/lib/form-validators/util/relational-checker.function.d.ts +2 -0
- package/lib/form-validators/util/reset-form.d.ts +21 -0
- package/lib/form-validators/util/sanitizers.d.ts +3 -0
- package/lib/form-validators/util/time-checker.function.d.ts +4 -0
- package/lib/form-validators/util/type.d.ts +3 -0
- package/lib/form-validators/util/validator-value-checker.d.ts +5 -0
- package/lib/form-validators/validators-extension/allOf-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/alpha-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/alphaNumeric-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/and-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/ascii-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/base-validator.function.d.ts +3 -0
- package/lib/form-validators/validators-extension/choice-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/compare-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/compose-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/contains-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/credit-card-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/cusip-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/custom-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/dataUri-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/date-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/different-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/digit-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/email-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/endsWith-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/even-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/extension-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/factor-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/file-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/fileSize-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/greater-than-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/grid-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/hexcolor-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/iban-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/image-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/index.d.ts +67 -0
- package/lib/form-validators/validators-extension/ip-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/json-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/latLong-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/latitude-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/leapYear-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/less-than-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/longitude-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/lowercase-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/mac-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/mask-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/maxDate-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/maxLength-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/maxNumber-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/maxTime-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/minDate-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/minLength-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/minNumber-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/minTime-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/noneOf-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/not-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/notEmpty-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/numeric-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/odd-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/oneOf-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/or-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/password-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/pattern-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/port-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/primeNumber-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/range-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/required-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/requiredTrue-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/rxweb-validators.d.ts +107 -0
- package/lib/form-validators/validators-extension/startsWith-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/time-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-extension/unique-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/uppercase-validator.extension.d.ts +3 -0
- package/lib/form-validators/validators-extension/url-validator.extension.d.ts +4 -0
- package/lib/form-validators/validators-function/alpha-validation.function.d.ts +3 -0
- package/lib/form-validators/validators-function/regex-validation.function.d.ts +4 -0
- package/lib/forms/components/generic-form/generic-form.component.d.ts +91 -0
- package/lib/forms/constants/constants.d.ts +1 -0
- package/lib/forms/directives/mat-form-field-editor.directive.d.ts +82 -0
- package/lib/forms/directives/mat-form-field-readonly.directive.d.ts +16 -0
- package/lib/forms/enums/form-field-type.d.ts +17 -0
- package/lib/forms/forms.module.d.ts +39 -0
- package/lib/forms/functions/decorators.d.ts +14 -0
- package/lib/forms/functions/functions.d.ts +7 -0
- package/lib/forms/helpers/abstract-mat-form-field.d.ts +182 -0
- package/lib/forms/helpers/value-accessor-base.d.ts +92 -0
- package/lib/forms/models/form-field-definition.d.ts +39 -0
- package/lib/forms/models/form-field-group.d.ts +12 -0
- package/lib/forms/public_api.d.ts +3 -0
- package/lib/forms/validators/equal-validator.directive.d.ts +20 -0
- package/lib/forms/validators/native-element-injector.directive.d.ts +17 -0
- package/lib/forms/validators/unique-validator-directive.d.ts +36 -0
- package/lib/http/http.module.d.ts +8 -0
- package/lib/http/public_api.d.ts +1 -0
- package/lib/http/services/generic.service.d.ts +166 -0
- package/lib/layout/_layout-theme.scss +89 -0
- package/lib/layout/form-toolbar/form-toolbar.component.d.ts +23 -0
- package/lib/layout/form-toolbar-menu/form-toolbar-menu.component.d.ts +10 -0
- package/lib/layout/layout-card-over/layout-card-over.component.d.ts +31 -0
- package/lib/layout/layout-footer/layout-footer.component.d.ts +17 -0
- package/lib/layout/layout-manage-list/layout-manage-list.component.d.ts +100 -0
- package/lib/layout/layout-manage-list/layout-manage-list.directives.d.ts +61 -0
- package/lib/layout/layout-nav/layout-nav.component.d.ts +85 -0
- package/lib/layout/layout-nav-list/layout-nav-list.component.d.ts +94 -0
- package/lib/layout/layout-nav-list/layout-nav-list.directives.d.ts +25 -0
- package/lib/layout/layout-toggle.class.d.ts +37 -0
- package/lib/layout/layout.component.d.ts +56 -0
- package/lib/layout/layout.directives.d.ts +25 -0
- package/lib/layout/layout.module.d.ts +46 -0
- package/lib/layout/list-toolbar/list-toolbar.component.d.ts +19 -0
- package/lib/layout/list-toolbar-menu/list-toolbar-menu.component.d.ts +10 -0
- package/lib/layout/navigation-drawer/navigation-drawer.component.d.ts +114 -0
- package/lib/layout/public_api.d.ts +1 -0
- package/lib/media/directives/media-toggle.directive.d.ts +44 -0
- package/lib/media/media.module.d.ts +11 -0
- package/lib/media/public_api.d.ts +1 -0
- package/lib/media/services/media.service.d.ts +37 -0
- package/lib/menu/components/menu.component.d.ts +28 -0
- package/lib/menu/enums/menu-scope.d.ts +4 -0
- package/lib/menu/menu.module.d.ts +19 -0
- package/lib/menu/models/menu-item.d.ts +17 -0
- package/lib/menu/models/menu.d.ts +14 -0
- package/lib/menu/public_api.d.ts +1 -0
- package/lib/menu/services/menu-items.service.d.ts +12 -0
- package/lib/menu/services/menu.resolve.d.ts +39 -0
- package/lib/menu/services/menu.service.d.ts +12 -0
- package/lib/search/public_api.d.ts +1 -0
- package/lib/search/search.module.d.ts +15 -0
- package/lib/search/vd-search-box/vd-search-box.component.d.ts +60 -0
- package/lib/search/vd-search-input/vd-search-input.component.d.ts +57 -0
- package/lib/select/public_api.d.ts +2 -0
- package/lib/select/select.component.d.ts +233 -0
- package/lib/select/select.module.d.ts +13 -0
- package/lib/table/components/dynamic-table/dynamic-table.component.d.ts +202 -0
- package/lib/table/components/filter-clear.component.d.ts +16 -0
- package/lib/table/components/filter-date.component.d.ts +70 -0
- package/lib/table/components/filter-input.component.d.ts +94 -0
- package/lib/table/components/filter-select.component.d.ts +178 -0
- package/lib/table/directives/data-source-filter.directive.d.ts +28 -0
- package/lib/table/enums/table-column-type.d.ts +12 -0
- package/lib/table/functions/decorators.d.ts +17 -0
- package/lib/table/functions/functions.d.ts +8 -0
- package/lib/table/models/pagination.d.ts +7 -0
- package/lib/table/models/table-column.d.ts +59 -0
- package/lib/table/models/table-definition.d.ts +24 -0
- package/lib/table/models/table-menu-item.d.ts +8 -0
- package/lib/table/paginator-intl.d.ts +27 -0
- package/lib/table/public_api.d.ts +2 -0
- package/lib/table/table.data-source.d.ts +140 -0
- package/lib/table/table.module.d.ts +46 -0
- package/lib/table/table.static-data-source.d.ts +88 -0
- package/messaia-cdk.d.ts +5 -0
- package/package.json +31 -0
- package/public_api.d.ts +14 -0
- package/src/lib/layout/README.md +119 -0
- package/src/lib/layout/layout-card-over/README.md +36 -0
- package/src/lib/layout/layout-manage-list/README.md +76 -0
- package/src/lib/layout/layout-nav/README.md +40 -0
- package/src/lib/layout/layout-nav-list/README.md +85 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
2
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
3
|
+
import { Component, EventEmitter, HostListener, Input, Output, QueryList, ViewChild, ViewChildren, ViewContainerRef } from '@angular/core';
|
|
4
|
+
import { MatMenuTrigger } from '@angular/material/menu';
|
|
5
|
+
import { MatPaginator } from '@angular/material/paginator';
|
|
6
|
+
import { MatSort } from '@angular/material/sort';
|
|
7
|
+
import { MatTable } from '@angular/material/table';
|
|
8
|
+
import { Utils } from '../../../common/functions/utils';
|
|
9
|
+
import { DynamicBuilder } from '../../../common/helpers/dynamic-builder';
|
|
10
|
+
import { TableColumnType } from '../../enums/table-column-type';
|
|
11
|
+
import { getTableDefinition } from '../../functions/functions';
|
|
12
|
+
import { TableColumn } from '../../models/table-column';
|
|
13
|
+
import { TableStaticDataSource } from '../../table.static-data-source';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "../../../common/helpers/dynamic-builder";
|
|
16
|
+
import * as i2 from "@angular/material/progress-bar";
|
|
17
|
+
import * as i3 from "@angular/material/table";
|
|
18
|
+
import * as i4 from "@angular/material/checkbox";
|
|
19
|
+
import * as i5 from "@angular/material/sort";
|
|
20
|
+
import * as i6 from "@angular/material/slide-toggle";
|
|
21
|
+
import * as i7 from "@angular/material/button";
|
|
22
|
+
import * as i8 from "@angular/material/icon";
|
|
23
|
+
import * as i9 from "@angular/material/menu";
|
|
24
|
+
import * as i10 from "@angular/material/form-field";
|
|
25
|
+
import * as i11 from "../filter-input.component";
|
|
26
|
+
import * as i12 from "../filter-select.component";
|
|
27
|
+
import * as i13 from "../filter-date.component";
|
|
28
|
+
import * as i14 from "../filter-clear.component";
|
|
29
|
+
import * as i15 from "@angular/material/paginator";
|
|
30
|
+
import * as i16 from "@angular/common";
|
|
31
|
+
import * as i17 from "../../directives/data-source-filter.directive";
|
|
32
|
+
import * as i18 from "@angular/cdk/table";
|
|
33
|
+
import * as i19 from "@angular/material/tooltip";
|
|
34
|
+
import * as i20 from "@angular/forms";
|
|
35
|
+
import * as i21 from "@angular/material/input";
|
|
36
|
+
import * as i22 from "../../../common/pipes/only-number";
|
|
37
|
+
import * as i23 from "../../../common/pipes/enum.pipe";
|
|
38
|
+
export class VdDynamicTableComponent {
|
|
39
|
+
/**
|
|
40
|
+
* Constructor
|
|
41
|
+
*/
|
|
42
|
+
constructor(dynamicBuilder) {
|
|
43
|
+
this.dynamicBuilder = dynamicBuilder;
|
|
44
|
+
/**
|
|
45
|
+
* dataSourceFilter: any
|
|
46
|
+
*/
|
|
47
|
+
this.dataSourceFilter = {};
|
|
48
|
+
/**
|
|
49
|
+
* filterable?
|
|
50
|
+
*/
|
|
51
|
+
this.filterable = true;
|
|
52
|
+
/**
|
|
53
|
+
* paginable?
|
|
54
|
+
*/
|
|
55
|
+
this.paginable = false;
|
|
56
|
+
/**
|
|
57
|
+
* Shows the column 'Checkbox'
|
|
58
|
+
*/
|
|
59
|
+
this.selectable = false;
|
|
60
|
+
/**
|
|
61
|
+
* Sticky header
|
|
62
|
+
*/
|
|
63
|
+
this.stickyHeader = true;
|
|
64
|
+
/**
|
|
65
|
+
* Sticky filter
|
|
66
|
+
*/
|
|
67
|
+
this.stickyFilter = true;
|
|
68
|
+
/**
|
|
69
|
+
* Row click event
|
|
70
|
+
*/
|
|
71
|
+
this.rowClick = new EventEmitter();
|
|
72
|
+
/**
|
|
73
|
+
* _readonly: boolean;
|
|
74
|
+
*/
|
|
75
|
+
this._readonly = false;
|
|
76
|
+
/**
|
|
77
|
+
* _columns: TableColumn[]
|
|
78
|
+
*/
|
|
79
|
+
this._columns = [];
|
|
80
|
+
/**
|
|
81
|
+
* Table row menu items
|
|
82
|
+
*/
|
|
83
|
+
this.rowMenuItems = [];
|
|
84
|
+
/**
|
|
85
|
+
* Columns to exclude
|
|
86
|
+
*/
|
|
87
|
+
this.excludedColumns = [];
|
|
88
|
+
/**
|
|
89
|
+
* ColumnType: ColumnType
|
|
90
|
+
*/
|
|
91
|
+
this.ColumnType = TableColumnType;
|
|
92
|
+
/**
|
|
93
|
+
* Displayed columns
|
|
94
|
+
*/
|
|
95
|
+
this.displayedColumns = [];
|
|
96
|
+
/**
|
|
97
|
+
* Displayed filter columns
|
|
98
|
+
*/
|
|
99
|
+
this.displayedFilterColumns = [];
|
|
100
|
+
/**
|
|
101
|
+
* Page size options
|
|
102
|
+
*/
|
|
103
|
+
this.pageSizeOptions = [5, 10, 15, 20, 30, 50, 100, 200];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Table data
|
|
107
|
+
*/
|
|
108
|
+
set data(data) {
|
|
109
|
+
this.dataSource = new TableStaticDataSource(data);
|
|
110
|
+
this.dataSource.sort = this.matSort;
|
|
111
|
+
this.dataSource.paginator = this._paginator;
|
|
112
|
+
this.paginable = true;
|
|
113
|
+
}
|
|
114
|
+
;
|
|
115
|
+
/**
|
|
116
|
+
* readonly: boolean;
|
|
117
|
+
*/
|
|
118
|
+
get readonly() { return this._readonly; }
|
|
119
|
+
set readonly(readonly) {
|
|
120
|
+
this._readonly = coerceBooleanProperty(readonly);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* paginator: MatPaginator
|
|
124
|
+
*/
|
|
125
|
+
set paginator(paginator) {
|
|
126
|
+
if (paginator) {
|
|
127
|
+
this.dataSource.paginator = paginator;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
;
|
|
131
|
+
/**
|
|
132
|
+
* columns: Column[]
|
|
133
|
+
*/
|
|
134
|
+
get columns() { return this._columns; }
|
|
135
|
+
;
|
|
136
|
+
set columns(columns) {
|
|
137
|
+
this._columns = columns;
|
|
138
|
+
}
|
|
139
|
+
;
|
|
140
|
+
/**
|
|
141
|
+
* A callback method that is invoked immediately after the
|
|
142
|
+
* default change detector has checked the directive's
|
|
143
|
+
* data-bound properties for the first time,
|
|
144
|
+
* and before any of the view or content children have been checked.
|
|
145
|
+
* It is invoked only once when the directive is instantiated.
|
|
146
|
+
*/
|
|
147
|
+
ngOnInit() {
|
|
148
|
+
if (this.classType) {
|
|
149
|
+
var tableDefinition = getTableDefinition(new this.classType);
|
|
150
|
+
if (tableDefinition) {
|
|
151
|
+
this.columns = [...tableDefinition.columns];
|
|
152
|
+
if (this.rowMenuItems?.length > 0) {
|
|
153
|
+
/* Check if the action column already exists */
|
|
154
|
+
var actionColmun = this._columns?.find(x => x.name == 'action');
|
|
155
|
+
/* If so, just add the menu items to it */
|
|
156
|
+
if (actionColmun != null) {
|
|
157
|
+
actionColmun.rowMenuItems = [];
|
|
158
|
+
this.rowMenuItems.forEach(y => actionColmun.rowMenuItems.unshift(y));
|
|
159
|
+
}
|
|
160
|
+
/* Otherwise add a new one */
|
|
161
|
+
else {
|
|
162
|
+
this._columns.push(new TableColumn({
|
|
163
|
+
index: 2000,
|
|
164
|
+
name: 'action',
|
|
165
|
+
type: TableColumnType.Action,
|
|
166
|
+
disabled: true,
|
|
167
|
+
rowMenuItems: this.rowMenuItems
|
|
168
|
+
}));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/* Add checkbox column */
|
|
172
|
+
if (this.selectable) {
|
|
173
|
+
this.columns.unshift({ name: 'select', type: TableColumnType.Checkbox });
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/* Build displayed columns & filter */
|
|
178
|
+
this.displayedColumns = this.columns?.filter(x => !this.excludedColumns?.includes(x.name))?.map(c => c.name);
|
|
179
|
+
this.displayedFilterColumns = this.columns?.filter(x => !this.excludedColumns?.includes(x.name))?.map(c => `filter.${(c.filter || c.name)}`);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Counts visible action menus
|
|
183
|
+
* @param row
|
|
184
|
+
* @param column
|
|
185
|
+
* @returns
|
|
186
|
+
*/
|
|
187
|
+
hasVisibleRowMenuItems(row, column) {
|
|
188
|
+
return column?.rowMenuItems?.filter(x => !x.hide || !x.hide(row))?.length > 0;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* A function to to compute the identity of items in an iterable.
|
|
192
|
+
* @param index
|
|
193
|
+
* @param item
|
|
194
|
+
*/
|
|
195
|
+
trackBy(index, item) {
|
|
196
|
+
return `${item.id}`;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Handles row click event
|
|
200
|
+
* @param index
|
|
201
|
+
* @param row
|
|
202
|
+
*/
|
|
203
|
+
handleRowClick(index, row) {
|
|
204
|
+
if (this.detailsTemplate) {
|
|
205
|
+
this.expandedRow = this.expandedRow === row ? null : row;
|
|
206
|
+
this.dynamicBuilder.compileHtml(this.detailsTemplateRef.get(index), this.detailsTemplate, row);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
this.rowClick.emit(row);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Method called when the user click with the right button
|
|
214
|
+
* @param event MouseEvent, it contains the coordinates
|
|
215
|
+
* @param item Our data contained in the row of the table
|
|
216
|
+
*/
|
|
217
|
+
handleRowRightClick(event, item) {
|
|
218
|
+
this.rowContextMenuTriggers?.toArray()?.forEach(x => x.closeMenu());
|
|
219
|
+
var menuTrigger = this.rowContextMenuTriggers?.toArray()?.filter(x => x['_element']?.nativeElement?.getAttribute('id') == `menu-${item.id}`)[0];
|
|
220
|
+
if (menuTrigger != null) {
|
|
221
|
+
/* Avoids to show the visualization of the right-click menu of the browser */
|
|
222
|
+
event.preventDefault();
|
|
223
|
+
// /* Remove grey color from all rows */
|
|
224
|
+
// (event.target as Element)?.closest('table')?.querySelectorAll('tr')?.forEach(x => x.classList?.remove('bgc-grey-100'));
|
|
225
|
+
// /* Add grey color to the row to make hover effect */
|
|
226
|
+
// (event.target as Element)?.closest('tr')?.classList.add('bgc-grey-100');
|
|
227
|
+
/* Set the position of the menu */
|
|
228
|
+
menuTrigger['_element']?.nativeElement?.setAttribute('style', `position: fixed; left: ${event.clientX}px; top: ${event.clientY}px`);
|
|
229
|
+
/* Pass to the menu the current object */
|
|
230
|
+
menuTrigger.menuData = { item: item };
|
|
231
|
+
/* Open the menu */
|
|
232
|
+
menuTrigger.openMenu();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Patches an entity
|
|
237
|
+
* @param row
|
|
238
|
+
* @param fieldName
|
|
239
|
+
* @param path
|
|
240
|
+
*/
|
|
241
|
+
patch(row, fields, value, includes) {
|
|
242
|
+
/* Get entity by ID */
|
|
243
|
+
let entity = this.dataSource.items?.filter(x => x.id === row.id)[0];
|
|
244
|
+
if (entity) {
|
|
245
|
+
/* Build patch methods */
|
|
246
|
+
let patches = fields.map(x => { return { op: 'replace', path: `/${x}`, value: value != undefined ? value : entity[x] }; });
|
|
247
|
+
/* Send request */
|
|
248
|
+
this.dataSource.service
|
|
249
|
+
.patch(row.id, patches, null, { headers: { 'Show-Message': 'Yes' }, params: includes ? Utils.toHttpParams({ includes: includes }) : null })
|
|
250
|
+
.subscribe((_) => this.dataSource.reload());
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Renders rows based on the table's latest set of data, which was either provided directly as an
|
|
255
|
+
* input or retrieved through an Observable stream (directly or from a DataSource).
|
|
256
|
+
* Checks for differences in the data since the last diff to perform only the necessary
|
|
257
|
+
* changes (add/remove/move rows).
|
|
258
|
+
*/
|
|
259
|
+
renderRows() {
|
|
260
|
+
this.table.renderRows();
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Responds to user-initiated events
|
|
264
|
+
* @param event
|
|
265
|
+
*/
|
|
266
|
+
handleContextMenuEvent(event) {
|
|
267
|
+
/* Avoids to show the visualization of the right-click menu of the browser */
|
|
268
|
+
event.preventDefault();
|
|
269
|
+
/* Close all open menus */
|
|
270
|
+
if (event.target?.classList?.contains('cdk-overlay-backdrop')) {
|
|
271
|
+
this.rowContextMenuTriggers?.toArray()?.forEach(x => x.closeMenu());
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/** @nocollapse */ /** @nocollapse */ VdDynamicTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdDynamicTableComponent, deps: [{ token: i1.DynamicBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
276
|
+
/** @nocollapse */ /** @nocollapse */ VdDynamicTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: VdDynamicTableComponent, selector: "vd-dynamic-table", inputs: { dataSource: "dataSource", data: "data", classType: "classType", dataSourceFilter: "dataSourceFilter", filterable: "filterable", paginable: "paginable", selectable: "selectable", sortActive: "sortActive", sortDirection: "sortDirection", stickyHeader: "stickyHeader", stickyFilter: "stickyFilter", rowNgClass: "rowNgClass", detailsTemplate: "detailsTemplate", readonly: "readonly", selectAllFilter: "selectAllFilter", columns: "columns", rowMenuItems: "rowMenuItems", excludedColumns: "excludedColumns" }, outputs: { rowClick: "rowClick" }, host: { listeners: { "document:contextmenu": "handleContextMenuEvent($event)" } }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "detailsTemplateRef", predicate: ["detailsTemplate"], descendants: true, read: ViewContainerRef }, { propertyName: "rowContextMenuTriggers", predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div class=\"loading-progress\">\r\n\t<mat-progress-bar mode=\"indeterminate\" *ngIf=\"dataSource?.isLoading\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- #region Data table -->\r\n<table mat-table #table [dataSource]=\"dataSource\" [dataSourceFilter]=\"dataSourceFilter\" [ngClass]=\"{'table-fixed': !detailsTemplate}\" [trackBy]=\"trackBy\" matSort matSortDisableClear [matSortActive]=\"sortActive||'id'\" [matSortDirection]=\"sortDirection\" multiTemplateDataRows>\r\n\t<ng-container [ngSwitch]=\"column.type\" *ngFor=\"let column of columns\">\r\n\t\t<!-- #region Checkbox for selection -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Checkbox\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef>\r\n\t\t\t\t<mat-checkbox (change)=\"$event ? dataSource.toggleSelect($event, selectAllFilter) : null\" [disabled]=\"!dataSource.paginator?.length\" [checked]=\"dataSource.selectionModel.hasValue() && dataSource.isAllSelected()\" [indeterminate]=\"dataSource.selectionModel.hasValue() && !dataSource.isAllSelected()\"></mat-checkbox>\r\n\t\t\t</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\">\r\n\t\t\t\t<mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? dataSource.selectionModel.toggle(row) : null\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row)))\" [checked]=\"dataSource.selectionModel.isSelected(row)\"></mat-checkbox>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Enum column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Enum\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<span i18n=\"@@selection\">{column.content(row) | enum:column.enumType:column.enumPrefix, select, type {type} other {{{column.content(row) | enum:column.enumType:column.enumPrefix}}}}</span>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Toggle column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Toggle\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" (click)=\"$event.stopPropagation()\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<mat-slide-toggle [(ngModel)]=\"row[column.name]\" (ngModelChange)=\"column.event?(column.eventArgs?column.event(row,column.eventArgs):column.event(row)):null\" [disabled]=\"readonly || (column.disable && column.disable(row))\" color=\"primary\"></mat-slide-toggle>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Date column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Date\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<span *ngIf=\"!column.shortDate\">{{column.content(row) | date:'dd.MM.yyyy HH:mm:ss'}}</span>\r\n\t\t\t\t<span *ngIf=\"column.shortDate\">{{column.content(row) | date:'dd.MM.yyyy'}}</span>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Action -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Action\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" (click)=\"$event.stopPropagation()\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<ng-container *ngIf=\"column.rowMenuItems?.length > 0\">\r\n\t\t\t\t\t<div id=\"menu-{{row.id}}\" style=\"visibility: hidden; position: fixed;\" #contextMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" *ngIf=\"!row.locked && hasVisibleRowMenuItems(row, column)\"></div>\r\n\t\t\t\t\t<button type=\"button\" mat-icon-button [mat-menu-trigger-for]=\"menu\" [disabled]=\"row.locked || !hasVisibleRowMenuItems(row, column)\">\r\n\t\t\t\t\t\t<mat-icon>more_vert</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<mat-menu x-position=\"before\" #menu=\"matMenu\">\r\n\t\t\t\t\t\t<ng-container *ngFor=\"let menuItem of column.rowMenuItems\">\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!menuItem.subItems\">\r\n\t\t\t\t\t\t\t\t<button type=\"button\" mat-menu-item (click)=\"menuItem.event?menuItem.event(row):null\" *ngIf=\"!menuItem.hide || !menuItem.hide(row)\" [disabled]=\"menuItem.disable && menuItem.disable(row)\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n\t\t\t\t\t\t\t\t\t<span>{{menuItem.title}}</span>\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"menuItem.subItems\">\r\n\t\t\t\t\t\t\t\t<mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n\t\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let menuSubItem of menuItem.subItems\">\r\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" mat-menu-item (click)=\"menuSubItem.event?menuSubItem.event(row):null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(row)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(row)\">\r\n\t\t\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuSubItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<span>{{menuSubItem.title}}</span>\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t</mat-menu>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(row)\" [disabled]=\"menuItem.disable && menuItem.disable(row)\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n\t\t\t\t\t\t\t\t\t<span>{{menuItem.title}}</span>\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t</mat-menu>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Text Input column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.TextInput\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row; let rowIndex = index\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" (click)=\"$event.preventDefault();$event.stopPropagation();\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<mat-form-field appearance=\"outline\" layout=\"column\" layout-align=\"center start\">\r\n\t\t\t\t\t<input type=\"{{column.inputType}}\" matInput name=\"{{column.name}}{{rowIndex}}\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row)))\" (ngModelChange)=\"patch(row, [column.name], row[column.name], column.patchIncludes)\" [ngModelOptions]=\"{updateOn: 'blur'}\" (keydown.enter)=\"$event.target.blur();false\">\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Other column types -->\r\n\t\t<ng-container *ngSwitchDefault [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<span *ngIf=\"column.content\" [innerHtml]=\"column.content(row)\"></span>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\t</ng-container>\r\n\r\n\t<!-- #region Filter row -->\r\n\t<ng-container *ngIf=\"dataSource && filterable\">\r\n\t\t<ng-container [ngSwitch]=\"column.type\" *ngFor=\"let column of columns\">\r\n\t\t\t<!-- #region No filter for checkbox -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.None || ColumnType.Checkbox\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Text filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Text\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region TextInput filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.TextInput\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Number filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Number\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Select filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Select\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-select [endpoint]=\"column.endpoint\" [options]=\"column.options\" [text]=\"column.filterOptionText || 'name'\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Enum filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Enum\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-select [enum]=\"column.enumType\" [prefix]=\"column.enumPrefix\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Toggle filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Toggle\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-select [options]=\"column.options\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Date filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Date\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-date [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Action filter (clear) -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Action\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-clear [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Details column -->\r\n\t<ng-container cdkColumnDef=\"expandedDetail\">\r\n\t\t<td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"displayedColumns.length\">\r\n\t\t\t<div class=\"row-detail\" [@detailExpand]=\"row == expandedRow ? 'expanded' : 'collapsed'\" #detailsTemplate></div>\r\n\t\t</td>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<ng-container *ngIf=\"filterable\">\r\n\t\t<tr mat-header-row *cdkHeaderRowDef=\"displayedFilterColumns\"></tr>\r\n\t</ng-container>\r\n\t<tr mat-header-row *cdkHeaderRowDef=\"displayedColumns; sticky: stickyFilter\"></tr>\r\n\t<tr mat-row *cdkRowDef=\"let row; columns: displayedColumns; let index = dataIndex\" [ngClass]=\"rowNgClass?rowNgClass(row):null\" [class.expanded-row]=\"expandedRow === row\" (click)=\"handleRowClick(index, row)\" (contextmenu)=\"handleRowRightClick($event, row)\"></tr>\r\n\t<ng-container *ngIf=\"detailsTemplate\">\r\n\t\t<tr mat-row *cdkRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\" [ngClass]=\"rowNgClass?rowNgClass(row):null\"></tr>\r\n\t</ng-container>\r\n</table>\r\n<!-- #endregion -->\r\n\r\n<!-- #region Row shown when there is no matching data.-->\r\n<div class=\"mat-cell pad tc-grey-700 bgc-grey-200 txt-italic\" *ngIf=\"!dataSource.filteredData?.length && !dataSource.total\" i18n=\"@@noResultsFound\">No results were found.</div>\r\n<!-- #endregion -->\r\n\r\n<mat-paginator *ngIf=\"paginable\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\"></mat-paginator>", styles: ["::ng-deep .mat-table .mat-row .mat-cell .mat-form-field .mat-form-field-wrapper{width:100%}@media (max-width: 389px){::ng-deep .mat-table [gt-xs]{display:none}::ng-deep .mat-table [gt-sm]{display:none}::ng-deep .mat-table [gt-md]{display:none}::ng-deep .mat-table [gt-lg]{display:none}::ng-deep .mat-table [gt-xl]{display:none}::ng-deep .mat-table [gt-xxl]{display:none}}@media (max-width: 599px){::ng-deep .mat-table [gt-sm]{display:none}::ng-deep .mat-table [gt-md]{display:none}::ng-deep .mat-table [gt-lg]{display:none}::ng-deep .mat-table [gt-xl]{display:none}::ng-deep .mat-table [gt-xxl]{display:none}}@media (max-width: 959px){::ng-deep .mat-table [gt-md]{display:none}::ng-deep .mat-table [gt-lg]{display:none}::ng-deep .mat-table [gt-xl]{display:none}::ng-deep .mat-table [gt-xxl]{display:none}}@media (max-width: 1279px){::ng-deep .mat-table [gt-lg]{display:none}::ng-deep .mat-table [gt-xl]{display:none}::ng-deep .mat-table [gt-xxl]{display:none}}@media (max-width: 1919px){::ng-deep .mat-table [gt-xl]{display:none}::ng-deep .mat-table [gt-xxl]{display:none}}@media (max-width: 1979px){::ng-deep .mat-table [gt-xxl]{display:none}}\n"], components: [{ type: i2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i6.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i10.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i11.FilterInputComponent, selector: "mat-header-cell[filter-input],[mat-header-cell][filter-input]", inputs: ["field", "operator", "onlyNumber", "debounce", "placeholder"] }, { type: i12.FilterSelectComponent, selector: "mat-header-cell[filter-select],[mat-header-cell][filter-select]", inputs: ["endpoint", "params", "projection", "sortBy", "sorted", "enum", "key", "text", "prefix", "multiple", "options", "filteredOptions", "filterable", "field", "placeholder", "cache"] }, { type: i13.FilterDateComponent, selector: "mat-header-cell[filter-date],[mat-header-cell][filter-date]", inputs: ["field", "debounce", "placeholder"] }, { type: i14.FilterClearComponent, selector: "mat-header-cell[filter-clear],[mat-header-cell][filter-clear]" }, { type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i15.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i16.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i17.DataSourceFilterDirective, selector: "[dataSourceFilter]", inputs: ["dataSource", "dataSourceFilter"] }, { type: i16.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i16.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i16.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i16.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i18.CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["sticky", "cdkColumnDef", "stickyEnd"] }, { type: i18.CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i18.CdkCellDef, selector: "[cdkCellDef]" }, { type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i16.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i19.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i20.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i20.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i21.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i20.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i16.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i22.OnlyNumberDirective, selector: "[onlyNumber]", inputs: ["onlyNumber"] }, { type: i3.MatCellDef, selector: "[matCellDef]" }, { type: i18.CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { type: i18.CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }], pipes: { "enum": i23.EnumPipe, "date": i16.DatePipe }, animations: [
|
|
277
|
+
trigger('detailExpand', [
|
|
278
|
+
state('collapsed', style({ display: 'none' })),
|
|
279
|
+
state('expanded', style({ display: 'initial' })),
|
|
280
|
+
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
281
|
+
]),
|
|
282
|
+
] });
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdDynamicTableComponent, decorators: [{
|
|
284
|
+
type: Component,
|
|
285
|
+
args: [{ selector: 'vd-dynamic-table', animations: [
|
|
286
|
+
trigger('detailExpand', [
|
|
287
|
+
state('collapsed', style({ display: 'none' })),
|
|
288
|
+
state('expanded', style({ display: 'initial' })),
|
|
289
|
+
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
290
|
+
]),
|
|
291
|
+
], template: "<div class=\"loading-progress\">\r\n\t<mat-progress-bar mode=\"indeterminate\" *ngIf=\"dataSource?.isLoading\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- #region Data table -->\r\n<table mat-table #table [dataSource]=\"dataSource\" [dataSourceFilter]=\"dataSourceFilter\" [ngClass]=\"{'table-fixed': !detailsTemplate}\" [trackBy]=\"trackBy\" matSort matSortDisableClear [matSortActive]=\"sortActive||'id'\" [matSortDirection]=\"sortDirection\" multiTemplateDataRows>\r\n\t<ng-container [ngSwitch]=\"column.type\" *ngFor=\"let column of columns\">\r\n\t\t<!-- #region Checkbox for selection -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Checkbox\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef>\r\n\t\t\t\t<mat-checkbox (change)=\"$event ? dataSource.toggleSelect($event, selectAllFilter) : null\" [disabled]=\"!dataSource.paginator?.length\" [checked]=\"dataSource.selectionModel.hasValue() && dataSource.isAllSelected()\" [indeterminate]=\"dataSource.selectionModel.hasValue() && !dataSource.isAllSelected()\"></mat-checkbox>\r\n\t\t\t</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\">\r\n\t\t\t\t<mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? dataSource.selectionModel.toggle(row) : null\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row)))\" [checked]=\"dataSource.selectionModel.isSelected(row)\"></mat-checkbox>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Enum column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Enum\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<span i18n=\"@@selection\">{column.content(row) | enum:column.enumType:column.enumPrefix, select, type {type} other {{{column.content(row) | enum:column.enumType:column.enumPrefix}}}}</span>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Toggle column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Toggle\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" (click)=\"$event.stopPropagation()\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<mat-slide-toggle [(ngModel)]=\"row[column.name]\" (ngModelChange)=\"column.event?(column.eventArgs?column.event(row,column.eventArgs):column.event(row)):null\" [disabled]=\"readonly || (column.disable && column.disable(row))\" color=\"primary\"></mat-slide-toggle>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Date column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Date\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<span *ngIf=\"!column.shortDate\">{{column.content(row) | date:'dd.MM.yyyy HH:mm:ss'}}</span>\r\n\t\t\t\t<span *ngIf=\"column.shortDate\">{{column.content(row) | date:'dd.MM.yyyy'}}</span>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Action -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Action\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" (click)=\"$event.stopPropagation()\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<ng-container *ngIf=\"column.rowMenuItems?.length > 0\">\r\n\t\t\t\t\t<div id=\"menu-{{row.id}}\" style=\"visibility: hidden; position: fixed;\" #contextMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" *ngIf=\"!row.locked && hasVisibleRowMenuItems(row, column)\"></div>\r\n\t\t\t\t\t<button type=\"button\" mat-icon-button [mat-menu-trigger-for]=\"menu\" [disabled]=\"row.locked || !hasVisibleRowMenuItems(row, column)\">\r\n\t\t\t\t\t\t<mat-icon>more_vert</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<mat-menu x-position=\"before\" #menu=\"matMenu\">\r\n\t\t\t\t\t\t<ng-container *ngFor=\"let menuItem of column.rowMenuItems\">\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!menuItem.subItems\">\r\n\t\t\t\t\t\t\t\t<button type=\"button\" mat-menu-item (click)=\"menuItem.event?menuItem.event(row):null\" *ngIf=\"!menuItem.hide || !menuItem.hide(row)\" [disabled]=\"menuItem.disable && menuItem.disable(row)\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n\t\t\t\t\t\t\t\t\t<span>{{menuItem.title}}</span>\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"menuItem.subItems\">\r\n\t\t\t\t\t\t\t\t<mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n\t\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let menuSubItem of menuItem.subItems\">\r\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" mat-menu-item (click)=\"menuSubItem.event?menuSubItem.event(row):null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(row)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(row)\">\r\n\t\t\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuSubItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<span>{{menuSubItem.title}}</span>\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t</mat-menu>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(row)\" [disabled]=\"menuItem.disable && menuItem.disable(row)\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n\t\t\t\t\t\t\t\t\t<span>{{menuItem.title}}</span>\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t</mat-menu>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Text Input column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.TextInput\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row; let rowIndex = index\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" (click)=\"$event.preventDefault();$event.stopPropagation();\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<mat-form-field appearance=\"outline\" layout=\"column\" layout-align=\"center start\">\r\n\t\t\t\t\t<input type=\"{{column.inputType}}\" matInput name=\"{{column.name}}{{rowIndex}}\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row)))\" (ngModelChange)=\"patch(row, [column.name], row[column.name], column.patchIncludes)\" [ngModelOptions]=\"{updateOn: 'blur'}\" (keydown.enter)=\"$event.target.blur();false\">\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Other column types -->\r\n\t\t<ng-container *ngSwitchDefault [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<span *ngIf=\"column.content\" [innerHtml]=\"column.content(row)\"></span>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\t</ng-container>\r\n\r\n\t<!-- #region Filter row -->\r\n\t<ng-container *ngIf=\"dataSource && filterable\">\r\n\t\t<ng-container [ngSwitch]=\"column.type\" *ngFor=\"let column of columns\">\r\n\t\t\t<!-- #region No filter for checkbox -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.None || ColumnType.Checkbox\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Text filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Text\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region TextInput filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.TextInput\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Number filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Number\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Select filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Select\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-select [endpoint]=\"column.endpoint\" [options]=\"column.options\" [text]=\"column.filterOptionText || 'name'\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Enum filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Enum\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-select [enum]=\"column.enumType\" [prefix]=\"column.enumPrefix\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Toggle filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Toggle\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-select [options]=\"column.options\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Date filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Date\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-date [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Action filter (clear) -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Action\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-clear [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Details column -->\r\n\t<ng-container cdkColumnDef=\"expandedDetail\">\r\n\t\t<td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"displayedColumns.length\">\r\n\t\t\t<div class=\"row-detail\" [@detailExpand]=\"row == expandedRow ? 'expanded' : 'collapsed'\" #detailsTemplate></div>\r\n\t\t</td>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<ng-container *ngIf=\"filterable\">\r\n\t\t<tr mat-header-row *cdkHeaderRowDef=\"displayedFilterColumns\"></tr>\r\n\t</ng-container>\r\n\t<tr mat-header-row *cdkHeaderRowDef=\"displayedColumns; sticky: stickyFilter\"></tr>\r\n\t<tr mat-row *cdkRowDef=\"let row; columns: displayedColumns; let index = dataIndex\" [ngClass]=\"rowNgClass?rowNgClass(row):null\" [class.expanded-row]=\"expandedRow === row\" (click)=\"handleRowClick(index, row)\" (contextmenu)=\"handleRowRightClick($event, row)\"></tr>\r\n\t<ng-container *ngIf=\"detailsTemplate\">\r\n\t\t<tr mat-row *cdkRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\" [ngClass]=\"rowNgClass?rowNgClass(row):null\"></tr>\r\n\t</ng-container>\r\n</table>\r\n<!-- #endregion -->\r\n\r\n<!-- #region Row shown when there is no matching data.-->\r\n<div class=\"mat-cell pad tc-grey-700 bgc-grey-200 txt-italic\" *ngIf=\"!dataSource.filteredData?.length && !dataSource.total\" i18n=\"@@noResultsFound\">No results were found.</div>\r\n<!-- #endregion -->\r\n\r\n<mat-paginator *ngIf=\"paginable\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\"></mat-paginator>", styles: ["::ng-deep .mat-table .mat-row .mat-cell .mat-form-field .mat-form-field-wrapper{width:100%}@media (max-width: 389px){::ng-deep .mat-table [gt-xs]{display:none}::ng-deep .mat-table [gt-sm]{display:none}::ng-deep .mat-table [gt-md]{display:none}::ng-deep .mat-table [gt-lg]{display:none}::ng-deep .mat-table [gt-xl]{display:none}::ng-deep .mat-table [gt-xxl]{display:none}}@media (max-width: 599px){::ng-deep .mat-table [gt-sm]{display:none}::ng-deep .mat-table [gt-md]{display:none}::ng-deep .mat-table [gt-lg]{display:none}::ng-deep .mat-table [gt-xl]{display:none}::ng-deep .mat-table [gt-xxl]{display:none}}@media (max-width: 959px){::ng-deep .mat-table [gt-md]{display:none}::ng-deep .mat-table [gt-lg]{display:none}::ng-deep .mat-table [gt-xl]{display:none}::ng-deep .mat-table [gt-xxl]{display:none}}@media (max-width: 1279px){::ng-deep .mat-table [gt-lg]{display:none}::ng-deep .mat-table [gt-xl]{display:none}::ng-deep .mat-table [gt-xxl]{display:none}}@media (max-width: 1919px){::ng-deep .mat-table [gt-xl]{display:none}::ng-deep .mat-table [gt-xxl]{display:none}}@media (max-width: 1979px){::ng-deep .mat-table [gt-xxl]{display:none}}\n"] }]
|
|
292
|
+
}], ctorParameters: function () { return [{ type: i1.DynamicBuilder }]; }, propDecorators: { table: [{
|
|
293
|
+
type: ViewChild,
|
|
294
|
+
args: ['table']
|
|
295
|
+
}], detailsTemplateRef: [{
|
|
296
|
+
type: ViewChildren,
|
|
297
|
+
args: ['detailsTemplate', { read: ViewContainerRef }]
|
|
298
|
+
}], dataSource: [{
|
|
299
|
+
type: Input
|
|
300
|
+
}], data: [{
|
|
301
|
+
type: Input
|
|
302
|
+
}], classType: [{
|
|
303
|
+
type: Input
|
|
304
|
+
}], dataSourceFilter: [{
|
|
305
|
+
type: Input
|
|
306
|
+
}], filterable: [{
|
|
307
|
+
type: Input
|
|
308
|
+
}], paginable: [{
|
|
309
|
+
type: Input
|
|
310
|
+
}], selectable: [{
|
|
311
|
+
type: Input
|
|
312
|
+
}], sortActive: [{
|
|
313
|
+
type: Input
|
|
314
|
+
}], sortDirection: [{
|
|
315
|
+
type: Input
|
|
316
|
+
}], stickyHeader: [{
|
|
317
|
+
type: Input
|
|
318
|
+
}], stickyFilter: [{
|
|
319
|
+
type: Input
|
|
320
|
+
}], rowClick: [{
|
|
321
|
+
type: Output
|
|
322
|
+
}], rowNgClass: [{
|
|
323
|
+
type: Input
|
|
324
|
+
}], detailsTemplate: [{
|
|
325
|
+
type: Input
|
|
326
|
+
}], readonly: [{
|
|
327
|
+
type: Input
|
|
328
|
+
}], selectAllFilter: [{
|
|
329
|
+
type: Input
|
|
330
|
+
}], matSort: [{
|
|
331
|
+
type: ViewChild,
|
|
332
|
+
args: [MatSort, { static: true }]
|
|
333
|
+
}], paginator: [{
|
|
334
|
+
type: ViewChild,
|
|
335
|
+
args: [MatPaginator]
|
|
336
|
+
}], columns: [{
|
|
337
|
+
type: Input
|
|
338
|
+
}], rowMenuItems: [{
|
|
339
|
+
type: Input
|
|
340
|
+
}], excludedColumns: [{
|
|
341
|
+
type: Input
|
|
342
|
+
}], rowContextMenuTriggers: [{
|
|
343
|
+
type: ViewChildren,
|
|
344
|
+
args: [MatMenuTrigger]
|
|
345
|
+
}], handleContextMenuEvent: [{
|
|
346
|
+
type: HostListener,
|
|
347
|
+
args: ['document:contextmenu', ['$event']]
|
|
348
|
+
}] } });
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25KLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FB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QUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT3BELFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0YsSUFBSTtzQkFEUCxLQUFLO2dCQVlDLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBT0MsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0MsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsWUFBWTtzQkFEbEIsS0FBSztnQkFPQyxZQUFZO3NCQURsQixLQUFLO2dCQU9DLFFBQVE7c0JBRGQsTUFBTTtnQkFPQSxVQUFVO3NCQURoQixLQUFLO2dCQU9DLGVBQWU7c0JBRHJCLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQVVDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBT0MsT0FBTztzQkFEYixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBWWhDLFNBQVM7c0JBRFosU0FBUzt1QkFBQyxZQUFZO2dCQWdCbkIsT0FBTztzQkFEVixLQUFLO2dCQVVDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBT0MsZUFBZTtzQkFEckIsS0FBSztnQkFPQyxzQkFBc0I7c0JBRDVCLFlBQVk7dUJBQUMsY0FBYztnQkFnTDVCLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgRHluYW1pY0J1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vaGVscGVycy9keW5hbWljLWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy90YWJsZS1jb2x1bW4tdHlwZSc7XHJcbmltcG9ydCB7IGdldFRhYmxlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1jb2x1bW4nO1xyXG5pbXBvcnQgeyBUYWJsZU1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLW1lbnUtaXRlbSc7XHJcbmltcG9ydCB7IFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL3RhYmxlLmRhdGEtc291cmNlJztcclxuaW1wb3J0IHsgVGFibGVTdGF0aWNEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vdGFibGUuc3RhdGljLWRhdGEtc291cmNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAndmQtZHluYW1pYy10YWJsZScsXHJcblx0dGVtcGxhdGVVcmw6ICdkeW5hbWljLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnZHluYW1pYy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG5cdGFuaW1hdGlvbnM6IFtcclxuXHRcdHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcclxuXHRcdFx0c3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgZGlzcGxheTogJ25vbmUnIH0pKSxcclxuXHRcdFx0c3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBkaXNwbGF5OiAnaW5pdGlhbCcgfSkpLFxyXG5cdFx0XHR0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG5cdFx0XSksXHJcblx0XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFZkRHluYW1pY1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHQvKipcclxuXHQgKiBkZXRhaWxzVGVtcGxhdGU6IFZpZXdDb250YWluZXJSZWZcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKCd0YWJsZScpXHJcblx0cHVibGljIHRhYmxlOiBNYXRUYWJsZTxhbnk+O1xyXG5cclxuXHQvKipcclxuXHQgKiBkZXRhaWxzVGVtcGxhdGU6IFZpZXdDb250YWluZXJSZWZcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkcmVuKCdkZXRhaWxzVGVtcGxhdGUnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuXHRwdWJsaWMgZGV0YWlsc1RlbXBsYXRlUmVmOiBRdWVyeUxpc3Q8YW55PjtcclxuXHJcblx0LyoqXHJcblx0ICogRGF0YS10YWJsZSBkYXRhc291cmNlXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZGF0YVNvdXJjZTogVGFibGVEYXRhU291cmNlPGFueSwgYW55PiB8IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogVGFibGUgZGF0YVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0c2V0IGRhdGEoZGF0YTogYW55KSB7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UgPSBuZXcgVGFibGVTdGF0aWNEYXRhU291cmNlKGRhdGEpO1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLm1hdFNvcnQ7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5fcGFnaW5hdG9yO1xyXG5cdFx0dGhpcy5wYWdpbmFibGUgPSB0cnVlO1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsYXNzIHR5cGVcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjbGFzc1R5cGU6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogZGF0YVNvdXJjZUZpbHRlcjogYW55XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZGF0YVNvdXJjZUZpbHRlcjogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIGZpbHRlcmFibGU/XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZmlsdGVyYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHBhZ2luYWJsZT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBwYWdpbmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgdGhlIGNvbHVtbiAnQ2hlY2tib3gnXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VsZWN0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgY29sdW1uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc29ydEFjdGl2ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgZGlyZWN0aW9uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc29ydERpcmVjdGlvbjogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBTdGlja3kgaGVhZGVyXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc3RpY2t5SGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogU3RpY2t5IGZpbHRlclxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHN0aWNreUZpbHRlcjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdyBjbGljayBldmVudFxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyByb3dDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogcm93TmdDbGFzczogRnVuY3Rpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyByb3dOZ0NsYXNzOiBGdW5jdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogZGV0YWlsc1RlbXBsYXRlOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGRldGFpbHNUZW1wbGF0ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBfcmVhZG9ubHk6IGJvb2xlYW47XHJcblx0ICovXHJcblx0cHVibGljIF9yZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiByZWFkb25seTogYm9vbGVhbjtcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCByZWFkb25seSgpIHsgcmV0dXJuIHRoaXMuX3JlYWRvbmx5OyB9XHJcblx0c2V0IHJlYWRvbmx5KHJlYWRvbmx5KSB7XHJcblx0XHR0aGlzLl9yZWFkb25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZWFkb25seSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBzZWxlY3RBbGxGaWx0ZXI6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VsZWN0QWxsRmlsdGVyOiAodmFsdWU6IGFueSwgaW5kZXg6IG51bWJlciwgYXJyYXk6IGFueVtdKSA9PiB1bmtub3duO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFNvcnQgYXR0cmlidXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBtYXRTb3J0OiBNYXRTb3J0O1xyXG5cclxuXHQvKipcclxuXHQgKiBfcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3JcclxuXHQgKi9cclxuXHRwcml2YXRlIF9wYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuXHJcblx0LyoqXHJcblx0ICogcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3JcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFBhZ2luYXRvcilcclxuXHRzZXQgcGFnaW5hdG9yKHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yKSB7XHJcblx0XHRpZiAocGFnaW5hdG9yKSB7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSBwYWdpbmF0b3I7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogX2NvbHVtbnM6IFRhYmxlQ29sdW1uW11cclxuXHQgKi9cclxuXHRwcml2YXRlIF9jb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNvbHVtbnM6IENvbHVtbltdXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgY29sdW1ucygpOiBUYWJsZUNvbHVtbltdIHsgcmV0dXJuIHRoaXMuX2NvbHVtbnM7IH07XHJcblx0c2V0IGNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSkge1xyXG5cdFx0dGhpcy5fY29sdW1ucyA9IGNvbHVtbnM7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogVGFibGUgcm93IG1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyByb3dNZW51SXRlbXM6IFRhYmxlTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb2x1bW5zIHRvIGV4Y2x1ZGVcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBleGNsdWRlZENvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUgTWF0TWVudVRyaWdnZXIgaW4gdGhlIERPTVxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGRyZW4oTWF0TWVudVRyaWdnZXIpXHJcblx0cHVibGljIHJvd0NvbnRleHRNZW51VHJpZ2dlcnM6IFF1ZXJ5TGlzdDxNYXRNZW51VHJpZ2dlcj47XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbHVtblR5cGU6IENvbHVtblR5cGVcclxuXHQgKi9cclxuXHRwdWJsaWMgQ29sdW1uVHlwZTogdHlwZW9mIFRhYmxlQ29sdW1uVHlwZSA9IFRhYmxlQ29sdW1uVHlwZTtcclxuXHJcblx0LyoqXHJcblx0ICogRGlzcGxheWVkIGNvbHVtbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogRGlzcGxheWVkIGZpbHRlciBjb2x1bW5zXHJcblx0ICovXHJcblx0cHVibGljIGRpc3BsYXllZEZpbHRlckNvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIGV4cGFuZGVkUm93OiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgZXhwYW5kZWRSb3c6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogUGFnZSBzaXplIG9wdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgcGFnZVNpemVPcHRpb25zOiBBcnJheTxudW1iZXI+ID0gWzUsIDEwLCAxNSwgMjAsIDMwLCA1MCwgMTAwLCAyMDBdO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZHluYW1pY0J1aWxkZXI6IER5bmFtaWNCdWlsZGVyKSB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxyXG5cdCAqIGRlZmF1bHQgY2hhbmdlIGRldGVjdG9yIGhhcyBjaGVja2VkIHRoZSBkaXJlY3RpdmUnc1xyXG5cdCAqIGRhdGEtYm91bmQgcHJvcGVydGllcyBmb3IgdGhlIGZpcnN0IHRpbWUsXHJcblx0ICogYW5kIGJlZm9yZSBhbnkgb2YgdGhlIHZpZXcgb3IgY29udGVudCBjaGlsZHJlbiBoYXZlIGJlZW4gY2hlY2tlZC5cclxuXHQgKiBJdCBpcyBpbnZva2VkIG9ubHkgb25jZSB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgaW5zdGFudGlhdGVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuY2xhc3NUeXBlKSB7XHJcblx0XHRcdHZhciB0YWJsZURlZmluaXRpb24gPSBnZXRUYWJsZURlZmluaXRpb24obmV3IHRoaXMuY2xhc3NUeXBlKTtcclxuXHRcdFx0aWYgKHRhYmxlRGVmaW5pdGlvbikge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucyA9IFsuLi50YWJsZURlZmluaXRpb24uY29sdW1uc107XHJcblx0XHRcdFx0aWYgKHRoaXMucm93TWVudUl0ZW1zPy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHQvKiBDaGVjayBpZiB0aGUgYWN0aW9uIGNvbHVtbiBhbHJlYWR5IGV4aXN0cyAqL1xyXG5cdFx0XHRcdFx0dmFyIGFjdGlvbkNvbG11biA9IHRoaXMuX2NvbHVtbnM/LmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2FjdGlvbicpO1xyXG5cclxuXHRcdFx0XHRcdC8qIElmIHNvLCBqdXN0IGFkZCB0aGUgbWVudSBpdGVtcyB0byBpdCAqL1xyXG5cdFx0XHRcdFx0aWYgKGFjdGlvbkNvbG11biAhPSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdGFjdGlvbkNvbG11bi5yb3dNZW51SXRlbXMgPSBbXTtcclxuXHRcdFx0XHRcdFx0dGhpcy5yb3dNZW51SXRlbXMuZm9yRWFjaCh5ID0+IGFjdGlvbkNvbG11bi5yb3dNZW51SXRlbXMudW5zaGlmdCh5KSk7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0LyogT3RoZXJ3aXNlIGFkZCBhIG5ldyBvbmUgKi9cclxuXHRcdFx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9jb2x1bW5zLnB1c2gobmV3IFRhYmxlQ29sdW1uKHtcclxuXHRcdFx0XHRcdFx0XHRpbmRleDogMjAwMCxcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiAnYWN0aW9uJyxcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiBUYWJsZUNvbHVtblR5cGUuQWN0aW9uLFxyXG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdHJvd01lbnVJdGVtczogdGhpcy5yb3dNZW51SXRlbXNcclxuXHRcdFx0XHRcdFx0fSkpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogQWRkIGNoZWNrYm94IGNvbHVtbiAqL1xyXG5cdFx0XHRcdGlmICh0aGlzLnNlbGVjdGFibGUpIHtcclxuXHRcdFx0XHRcdHRoaXMuY29sdW1ucy51bnNoaWZ0KHsgbmFtZTogJ3NlbGVjdCcsIHR5cGU6IFRhYmxlQ29sdW1uVHlwZS5DaGVja2JveCB9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvKiBCdWlsZCBkaXNwbGF5ZWQgY29sdW1ucyAmIGZpbHRlciAqL1xyXG5cdFx0dGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoeCA9PiAhdGhpcy5leGNsdWRlZENvbHVtbnM/LmluY2x1ZGVzKHgubmFtZSkpPy5tYXAoYyA9PiBjLm5hbWUpO1xyXG5cdFx0dGhpcy5kaXNwbGF5ZWRGaWx0ZXJDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoeCA9PiAhdGhpcy5leGNsdWRlZENvbHVtbnM/LmluY2x1ZGVzKHgubmFtZSkpPy5tYXAoYyA9PiBgZmlsdGVyLiR7KGMuZmlsdGVyIHx8IGMubmFtZSl9YCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb3VudHMgdmlzaWJsZSBhY3Rpb24gbWVudXNcclxuXHQgKiBAcGFyYW0gcm93IFxyXG5cdCAqIEBwYXJhbSBjb2x1bW4gXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGhhc1Zpc2libGVSb3dNZW51SXRlbXMocm93OiBhbnksIGNvbHVtbjogVGFibGVDb2x1bW4pIHtcclxuXHRcdHJldHVybiBjb2x1bW4/LnJvd01lbnVJdGVtcz8uZmlsdGVyKHggPT4gIXguaGlkZSB8fCAheC5oaWRlKHJvdykpPy5sZW5ndGggPiAwO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBmdW5jdGlvbiB0byB0byBjb21wdXRlIHRoZSBpZGVudGl0eSBvZiBpdGVtcyBpbiBhbiBpdGVyYWJsZS5cclxuXHQgKiBAcGFyYW0gaW5kZXggXHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICovXHJcblx0cHVibGljIHRyYWNrQnkoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBgJHtpdGVtLmlkfWA7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIHJvdyBjbGljayBldmVudFxyXG5cdCAqIEBwYXJhbSBpbmRleCBcclxuXHQgKiBAcGFyYW0gcm93IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVSb3dDbGljayhpbmRleDogYW55LCByb3c6IGFueSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuZGV0YWlsc1RlbXBsYXRlKSB7XHJcblx0XHRcdHRoaXMuZXhwYW5kZWRSb3cgPSB0aGlzLmV4cGFuZGVkUm93ID09PSByb3cgPyBudWxsIDogcm93O1xyXG5cdFx0XHR0aGlzLmR5bmFtaWNCdWlsZGVyLmNvbXBpbGVIdG1sKHRoaXMuZGV0YWlsc1RlbXBsYXRlUmVmLmdldChpbmRleCksIHRoaXMuZGV0YWlsc1RlbXBsYXRlLCByb3cpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5yb3dDbGljay5lbWl0KHJvdyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBNZXRob2QgY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2sgd2l0aCB0aGUgcmlnaHQgYnV0dG9uXHJcblx0ICogQHBhcmFtIGV2ZW50IE1vdXNlRXZlbnQsIGl0IGNvbnRhaW5zIHRoZSBjb29yZGluYXRlc1xyXG5cdCAqIEBwYXJhbSBpdGVtIE91ciBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgcm93IG9mIHRoZSB0YWJsZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVSb3dSaWdodENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcclxuXHRcdHRoaXMucm93Q29udGV4dE1lbnVUcmlnZ2Vycz8udG9BcnJheSgpPy5mb3JFYWNoKHggPT4geC5jbG9zZU1lbnUoKSk7XHJcblx0XHR2YXIgbWVudVRyaWdnZXIgPSB0aGlzLnJvd0NvbnRleHRNZW51VHJpZ2dlcnM/LnRvQXJyYXkoKT8uZmlsdGVyKHggPT4geFsnX2VsZW1lbnQnXT8ubmF0aXZlRWxlbWVudD8uZ2V0QXR0cmlidXRlKCdpZCcpID09IGBtZW51LSR7aXRlbS5pZH1gKVswXTtcclxuXHRcdGlmIChtZW51VHJpZ2dlciAhPSBudWxsKSB7XHJcblx0XHRcdC8qIEF2b2lkcyB0byBzaG93IHRoZSB2aXN1YWxpemF0aW9uIG9mIHRoZSByaWdodC1jbGljayBtZW51IG9mIHRoZSBicm93c2VyICovXHJcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG5cdFx0XHQvLyAvKiBSZW1vdmUgZ3JleSBjb2xvciBmcm9tIGFsbCByb3dzICovXHJcblx0XHRcdC8vIChldmVudC50YXJnZXQgYXMgRWxlbWVudCk/LmNsb3Nlc3QoJ3RhYmxlJyk/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJyk/LmZvckVhY2goeCA9PiB4LmNsYXNzTGlzdD8ucmVtb3ZlKCdiZ2MtZ3JleS0xMDAnKSk7XHJcblxyXG5cdFx0XHQvLyAvKiBBZGQgZ3JleSBjb2xvciB0byB0aGUgcm93IHRvIG1ha2UgaG92ZXIgZWZmZWN0ICovXHJcblx0XHRcdC8vIChldmVudC50YXJnZXQgYXMgRWxlbWVudCk/LmNsb3Nlc3QoJ3RyJyk/LmNsYXNzTGlzdC5hZGQoJ2JnYy1ncmV5LTEwMCcpO1xyXG5cclxuXHRcdFx0LyogU2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbWVudSAqL1xyXG5cdFx0XHRtZW51VHJpZ2dlclsnX2VsZW1lbnQnXT8ubmF0aXZlRWxlbWVudD8uc2V0QXR0cmlidXRlKCdzdHlsZScsIGBwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6ICR7ZXZlbnQuY2xpZW50WH1weDsgdG9wOiAke2V2ZW50LmNsaWVudFl9cHhgKTtcclxuXHJcblx0XHRcdC8qIFBhc3MgdG8gdGhlIG1lbnUgdGhlIGN1cnJlbnQgb2JqZWN0ICovXHJcblx0XHRcdG1lbnVUcmlnZ2VyLm1lbnVEYXRhID0geyBpdGVtOiBpdGVtIH1cclxuXHJcblx0XHRcdC8qIE9wZW4gdGhlIG1lbnUgKi9cclxuXHRcdFx0bWVudVRyaWdnZXIub3Blbk1lbnUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhdGNoZXMgYW4gZW50aXR5XHJcblx0ICogQHBhcmFtIHJvdyBcclxuXHQgKiBAcGFyYW0gZmllbGROYW1lIFxyXG5cdCAqIEBwYXJhbSBwYXRoIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYXRjaChyb3c6IGFueSwgZmllbGRzOiBBcnJheTxzdHJpbmc+LCB2YWx1ZTogYW55LCBpbmNsdWRlczogYW55KTogdm9pZCB7XHJcblx0XHQvKiBHZXQgZW50aXR5IGJ5IElEICovXHJcblx0XHRsZXQgZW50aXR5ID0gdGhpcy5kYXRhU291cmNlLml0ZW1zPy5maWx0ZXIoeCA9PiAoPGFueT54KS5pZCA9PT0gcm93LmlkKVswXTtcclxuXHRcdGlmIChlbnRpdHkpIHtcclxuXHRcdFx0LyogQnVpbGQgcGF0Y2ggbWV0aG9kcyAqL1xyXG5cdFx0XHRsZXQgcGF0Y2hlcyA9IGZpZWxkcy5tYXAoeCA9PiB7IHJldHVybiB7IG9wOiAncmVwbGFjZScsIHBhdGg6IGAvJHt4fWAsIHZhbHVlOiB2YWx1ZSAhPSB1bmRlZmluZWQgPyB2YWx1ZSA6IGVudGl0eVt4XSB9OyB9KTtcclxuXHJcblx0XHRcdC8qIFNlbmQgcmVxdWVzdCAqL1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2Uuc2VydmljZVxyXG5cdFx0XHRcdC5wYXRjaChyb3cuaWQsIHBhdGNoZXMsIG51bGwsIHsgaGVhZGVyczogeyAnU2hvdy1NZXNzYWdlJzogJ1llcycgfSwgcGFyYW1zOiBpbmNsdWRlcyA/IFV0aWxzLnRvSHR0cFBhcmFtcyh7IGluY2x1ZGVzOiBpbmNsdWRlcyB9KSA6IG51bGwgfSlcclxuXHRcdFx0XHQuc3Vic2NyaWJlKChfOiBhbnkpID0+IHRoaXMuZGF0YVNvdXJjZS5yZWxvYWQoKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW5kZXJzIHJvd3MgYmFzZWQgb24gdGhlIHRhYmxlJ3MgbGF0ZXN0IHNldCBvZiBkYXRhLCB3aGljaCB3YXMgZWl0aGVyIHByb3ZpZGVkIGRpcmVjdGx5IGFzIGFuXHJcblx0ICogaW5wdXQgb3IgcmV0cmlldmVkIHRocm91Z2ggYW4gT2JzZXJ2YWJsZSBzdHJlYW0gKGRpcmVjdGx5IG9yIGZyb20gYSBEYXRhU291cmNlKS5cclxuXHQgKiBDaGVja3MgZm9yIGRpZmZlcmVuY2VzIGluIHRoZSBkYXRhIHNpbmNlIHRoZSBsYXN0IGRpZmYgdG8gcGVyZm9ybSBvbmx5IHRoZSBuZWNlc3NhcnlcclxuXHQgKiBjaGFuZ2VzIChhZGQvcmVtb3ZlL21vdmUgcm93cykuXHJcblx0ICovXHJcblx0cHVibGljIHJlbmRlclJvd3MoKTogdm9pZCB7XHJcblx0XHR0aGlzLnRhYmxlLnJlbmRlclJvd3MoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlc3BvbmRzIHRvIHVzZXItaW5pdGlhdGVkIGV2ZW50c1xyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjb250ZXh0bWVudScsIFsnJGV2ZW50J10pXHJcblx0aGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudDogUG9pbnRlckV2ZW50KSB7XHJcblx0XHQvKiBBdm9pZHMgdG8gc2hvdyB0aGUgdmlzdWFsaXphdGlvbiBvZiB0aGUgcmlnaHQtY2xpY2sgbWVudSBvZiB0aGUgYnJvd3NlciAqL1xyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcblx0XHQvKiBDbG9zZSBhbGwgb3BlbiBtZW51cyAqL1xyXG5cdFx0aWYgKChldmVudC50YXJnZXQgYXMgYW55KT8uY2xhc3NMaXN0Py5jb250YWlucygnY2RrLW92ZXJsYXktYmFja2Ryb3AnKSkge1xyXG5cdFx0XHR0aGlzLnJvd0NvbnRleHRNZW51VHJpZ2dlcnM/LnRvQXJyYXkoKT8uZm9yRWFjaCh4ID0+IHguY2xvc2VNZW51KCkpO1xyXG5cdFx0fVxyXG5cdH1cclxufSIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nLXByb2dyZXNzXCI+XHJcblx0PG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImRhdGFTb3VyY2U/LmlzTG9hZGluZ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPC9kaXY+XHJcblxyXG48IS0tICNyZWdpb24gRGF0YSB0YWJsZSAtLT5cclxuPHRhYmxlIG1hdC10YWJsZSAjdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIFtkYXRhU291cmNlRmlsdGVyXT1cImRhdGFTb3VyY2VGaWx0ZXJcIiBbbmdDbGFzc109XCJ7J3RhYmxlLWZpeGVkJzogIWRldGFpbHNUZW1wbGF0ZX1cIiBbdHJhY2tCeV09XCJ0cmFja0J5XCIgbWF0U29ydCBtYXRTb3J0RGlzYWJsZUNsZWFyIFttYXRTb3J0QWN0aXZlXT1cInNvcnRBY3RpdmV8fCdpZCdcIiBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCIgbXVsdGlUZW1wbGF0ZURhdGFSb3dzPlxyXG5cdDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCI+XHJcblx0XHQ8IS0tICNyZWdpb24gQ2hlY2tib3ggZm9yIHNlbGVjdGlvbiAtLT5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuQ2hlY2tib3hcIiBbY2RrQ29sdW1uRGVmXT1cImNvbHVtbi5uYW1lXCIgW3N0aWNreV09XCJjb2x1bW4uc3RpY2t5XCIgW3N0aWNreUVuZF09XCJjb2x1bW4uc3RpY2t5RW5kXCI+XHJcblx0XHRcdDx0aCBtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWY+XHJcblx0XHRcdFx0PG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IGRhdGFTb3VyY2UudG9nZ2xlU2VsZWN0KCRldmVudCwgc2VsZWN0QWxsRmlsdGVyKSA6IG51bGxcIiBbZGlzYWJsZWRdPVwiIWRhdGFTb3VyY2UucGFnaW5hdG9yPy5sZW5ndGhcIiBbY2hlY2tlZF09XCJkYXRhU291cmNlLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKCkgJiYgZGF0YVNvdXJjZS5pc0FsbFNlbGVjdGVkKClcIiBbaW5kZXRlcm1pbmF0ZV09XCJkYXRhU291cmNlLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKCkgJiYgIWRhdGFTb3VyY2UuaXNBbGxTZWxlY3RlZCgpXCI+PC9tYXQtY2hlY2tib3g+XHJcblx0XHRcdDwvdGg+XHJcblx0XHRcdDx0ZCBtYXQtY2VsbCAqY2RrQ2VsbERlZj1cImxldCByb3dcIiBbbmdDbGFzc109XCJjb2x1bW4uY2VsbE5nQ2xhc3M/Y29sdW1uLmNlbGxOZ0NsYXNzKHJvdyk6eyd0ZXh0LXJpZ2h0JzogY29sdW1uLmFycm93QmVmb3JlfVwiPlxyXG5cdFx0XHRcdDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIChjaGFuZ2UpPVwiJGV2ZW50ID8gZGF0YVNvdXJjZS5zZWxlY3Rpb25Nb2RlbC50b2dnbGUocm93KSA6IG51bGxcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHkgfHwgKGNvbHVtbi5kaXNhYmxlZCB8fCAoY29sdW1uLmRpc2FibGUgJiYgY29sdW1uLmRpc2FibGUocm93KSkpXCIgW2NoZWNrZWRdPVwiZGF0YVNvdXJjZS5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHJvdylcIj48L21hdC1jaGVja2JveD5cclxuXHRcdFx0PC90ZD5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdDwhLS0gI3JlZ2lvbiBFbnVtIGNvbHVtbiAtLT5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuRW51bVwiIFtjZGtDb2x1bW5EZWZdPVwiY29sdW1uLm5hbWVcIiBbc3RpY2t5XT1cImNvbHVtbi5zdGlja3lcIiBbc3RpY2t5RW5kXT1cImNvbHVtbi5zdGlja3lFbmRcIj5cclxuXHRcdFx0PHRoIG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZiBbbWF0LXNvcnQtaGVhZGVyXT1cImNvbHVtbi5zb3J0QnkgfHwgY29sdW1uLm5hbWVcIiBbbmdTdHlsZV09XCJ7bWF4V2lkdGg6Y29sdW1uLm1heFdpZHRoPyhjb2x1bW4ubWF4V2lkdGgrKGNvbHVtbi5tYXhXaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsbWluV2lkdGg6Y29sdW1uLm1pbldpZHRoPyhjb2x1bW4ubWluV2lkdGgrKGNvbHVtbi5taW5XaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsd2lkdGg6Y29sdW1uLndpZHRoPyhjb2x1bW4ud2lkdGgrKGNvbHVtbi53aWR0aFVuaXQgfHwgJ3B4JykpOm51bGx9XCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZFwiIFthdHRyLmd0LXhzXT1cImNvbHVtbi5zaG93R3RYc1wiIFthdHRyLmd0LXNtXT1cImNvbHVtbi5zaG93R3RTbVwiIFthdHRyLmd0LW1kXT1cImNvbHVtbi5zaG93R3RNZFwiIFthdHRyLmd0LWxnXT1cImNvbHVtbi5zaG93R3RMZ1wiIFthdHRyLmd0LXhsXT1cImNvbHVtbi5zaG93R3RYbFwiIFthdHRyLmd0LXh4bF09XCJjb2x1bW4uc2hvd0d0WHhsXCIgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uLmFycm93QmVmb3JlPydiZWZvcmUnOidhZnRlcidcIj57e2NvbHVtbi5oZWFkZXJ9fTwvdGg+XHJcblx0XHRcdDx0ZCBtYXQtY2VsbCAqY2RrQ2VsbERlZj1cImxldCByb3dcIiBbbWF0VG9vbHRpcF09XCJjb2x1bW4udG9vbHRpcD9jb2x1bW4udG9vbHRpcChyb3cpOm51bGxcIiBbbWF0VG9vbHRpcENsYXNzXT1cImNvbHVtbi50b29sdGlwQ2xhc3NcIiBbbmdDbGFzc109XCJjb2x1bW4uY2VsbE5nQ2xhc3M/Y29sdW1uLmNlbGxOZ0NsYXNzKHJvdyk6eyd0ZXh0LXJpZ2h0JzogY29sdW1uLmFycm93QmVmb3JlfVwiIFtuZ1N0eWxlXT1cInttYXhXaWR0aDpjb2x1bW4ubWF4V2lkdGg/KGNvbHVtbi5tYXhXaWR0aCsoY29sdW1uLm1heFdpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCxtaW5XaWR0aDpjb2x1bW4ubWluV2lkdGg/KGNvbHVtbi5taW5XaWR0aCsoY29sdW1uLm1pbldpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCx3aWR0aDpjb2x1bW4ud2lkdGg/KGNvbHVtbi53aWR0aCsoY29sdW1uLndpZHRoVW5pdCB8fCAncHgnKSk6bnVsbH1cIiBbYXR0ci5ndC14c109XCJjb2x1bW4uc2hvd0d0WHNcIiBbYXR0ci5ndC1zbV09XCJjb2x1bW4uc2hvd0d0U21cIiBbYXR0ci5ndC1tZF09XCJjb2x1bW4uc2hvd0d0TWRcIiBbYXR0ci5ndC1sZ109XCJjb2x1bW4uc2hvd0d0TGdcIiBbYXR0ci5ndC14bF09XCJjb2x1bW4uc2hvd0d0WGxcIiBbYXR0ci5ndC14eGxdPVwiY29sdW1uLnNob3dHdFh4bFwiPlxyXG5cdFx0XHRcdDxzcGFuIGkxOG49XCJAQHNlbGVjdGlvblwiPntjb2x1bW4uY29udGVudChyb3cpIHwgZW51bTpjb2x1bW4uZW51bVR5cGU6Y29sdW1uLmVudW1QcmVmaXgsIHNlbGVjdCwgdHlwZSB7dHlwZX0gb3RoZXIge3t7Y29sdW1uLmNvbnRlbnQocm93KSB8IGVudW06Y29sdW1uLmVudW1UeXBlOmNvbHVtbi5lbnVtUHJlZml4fX19fTwvc3Bhbj5cclxuXHRcdFx0PC90ZD5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdDwhLS0gI3JlZ2lvbiBUb2dnbGUgY29sdW1uIC0tPlxyXG5cdFx0PG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiQ29sdW1uVHlwZS5Ub2dnbGVcIiBbY2RrQ29sdW1uRGVmXT1cImNvbHVtbi5uYW1lXCIgW3N0aWNreV09XCJjb2x1bW4uc3RpY2t5XCIgW3N0aWNreUVuZF09XCJjb2x1bW4uc3RpY2t5RW5kXCI+XHJcblx0XHRcdDx0aCBtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEJ5IHx8IGNvbHVtbi5uYW1lXCIgW25nU3R5bGVdPVwie21heFdpZHRoOmNvbHVtbi5tYXhXaWR0aD8oY29sdW1uLm1heFdpZHRoKyhjb2x1bW4ubWF4V2lkdGhVbml0IHx8ICdweCcpKTpudWxsLG1pbldpZHRoOmNvbHVtbi5taW5XaWR0aD8oY29sdW1uLm1pbldpZHRoKyhjb2x1bW4ubWluV2lkdGhVbml0IHx8ICdweCcpKTpudWxsLHdpZHRoOmNvbHVtbi53aWR0aD8oY29sdW1uLndpZHRoKyhjb2x1bW4ud2lkdGhVbml0IHx8ICdweCcpKTpudWxsfVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWRcIiBbYXR0ci5ndC14c109XCJjb2x1bW4uc2hvd0d0WHNcIiBbYXR0ci5ndC1zbV09XCJjb2x1bW4uc2hvd0d0U21cIiBbYXR0ci5ndC1tZF09XCJjb2x1bW4uc2hvd0d0TWRcIiBbYXR0ci5ndC1sZ109XCJjb2x1bW4uc2hvd0d0TGdcIiBbYXR0ci5ndC14bF09XCJjb2x1bW4uc2hvd0d0WGxcIiBbYXR0ci5ndC14eGxdPVwiY29sdW1uLnNob3dHdFh4bFwiIFthcnJvd1Bvc2l0aW9uXT1cImNvbHVtbi5hcnJvd0JlZm9yZT8nYmVmb3JlJzonYWZ0ZXInXCI+e3tjb2x1bW4uaGVhZGVyfX08L3RoPlxyXG5cdFx0XHQ8dGQgbWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93XCIgW21hdFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXA/Y29sdW1uLnRvb2x0aXAocm93KTpudWxsXCIgW21hdFRvb2x0aXBDbGFzc109XCJjb2x1bW4udG9vbHRpcENsYXNzXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsTmdDbGFzcz9jb2x1bW4uY2VsbE5nQ2xhc3Mocm93KTp7J3RleHQtcmlnaHQnOiBjb2x1bW4uYXJyb3dCZWZvcmV9XCIgW25nU3R5bGVdPVwie21heFdpZHRoOmNvbHVtbi5tYXhXaWR0aD8oY29sdW1uLm1heFdpZHRoKyhjb2x1bW4ubWF4V2lkdGhVbml0IHx8ICdweCcpKTpudWxsLG1pbldpZHRoOmNvbHVtbi5taW5XaWR0aD8oY29sdW1uLm1pbldpZHRoKyhjb2x1bW4ubWluV2lkdGhVbml0IHx8ICdweCcpKTpudWxsLHdpZHRoOmNvbHVtbi53aWR0aD8oY29sdW1uLndpZHRoKyhjb2x1bW4ud2lkdGhVbml0IHx8ICdweCcpKTpudWxsfVwiIFthdHRyLmd0LXhzXT1cImNvbHVtbi5zaG93R3RYc1wiIFthdHRyLmd0LXNtXT1cImNvbHVtbi5zaG93R3RTbVwiIFthdHRyLmd0LW1kXT1cImNvbHVtbi5zaG93R3RNZFwiIFthdHRyLmd0LWxnXT1cImNvbHVtbi5zaG93R3RMZ1wiIFthdHRyLmd0LXhsXT1cImNvbHVtbi5zaG93R3RYbFwiIFthdHRyLmd0LXh4bF09XCJjb2x1bW4uc2hvd0d0WHhsXCI+XHJcblx0XHRcdFx0PG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLm5hbWVdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY29sdW1uLmV2ZW50Pyhjb2x1bW4uZXZlbnRBcmdzP2NvbHVtbi5ldmVudChyb3csY29sdW1uLmV2ZW50QXJncyk6Y29sdW1uLmV2ZW50KHJvdykpOm51bGxcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHkgfHwgKGNvbHVtbi5kaXNhYmxlICYmIGNvbHVtbi5kaXNhYmxlKHJvdykpXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG5cdFx0XHQ8L3RkPlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0PCEtLSAjcmVnaW9uIERhdGUgY29sdW1uIC0tPlxyXG5cdFx0PG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiQ29sdW1uVHlwZS5EYXRlXCIgW2Nka0NvbHVtbkRlZl09XCJjb2x1bW4ubmFtZVwiIFtzdGlja3ldPVwiY29sdW1uLnN0aWNreVwiIFtzdGlja3lFbmRdPVwiY29sdW1uLnN0aWNreUVuZFwiPlxyXG5cdFx0XHQ8dGggbWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uLnNvcnRCeSB8fCBjb2x1bW4ubmFtZVwiIFtuZ1N0eWxlXT1cInttYXhXaWR0aDpjb2x1bW4ubWF4V2lkdGg/KGNvbHVtbi5tYXhXaWR0aCsoY29sdW1uLm1heFdpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCxtaW5XaWR0aDpjb2x1bW4ubWluV2lkdGg/KGNvbHVtbi5taW5XaWR0aCsoY29sdW1uLm1pbldpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCx3aWR0aDpjb2x1bW4ud2lkdGg/KGNvbHVtbi53aWR0aCsoY29sdW1uLndpZHRoVW5pdCB8fCAncHgnKSk6bnVsbH1cIiBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkXCIgW2F0dHIuZ3QteHNdPVwiY29sdW1uLnNob3dHdFhzXCIgW2F0dHIuZ3Qtc21dPVwiY29sdW1uLnNob3dHdFNtXCIgW2F0dHIuZ3QtbWRdPVwiY29sdW1uLnNob3dHdE1kXCIgW2F0dHIuZ3QtbGddPVwiY29sdW1uLnNob3dHdExnXCIgW2F0dHIuZ3QteGxdPVwiY29sdW1uLnNob3dHdFhsXCIgW2F0dHIuZ3QteHhsXT1cImNvbHVtbi5zaG93R3RYeGxcIiBbYXJyb3dQb3NpdGlvbl09XCJjb2x1bW4uYXJyb3dCZWZvcmU/J2JlZm9yZSc6J2FmdGVyJ1wiPnt7Y29sdW1uLmhlYWRlcn19PC90aD5cclxuXHRcdFx0PHRkIG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiIFttYXRUb29sdGlwXT1cImNvbHVtbi50b29sdGlwP2NvbHVtbi50b29sdGlwKHJvdyk6bnVsbFwiIFttYXRUb29sdGlwQ2xhc3NdPVwiY29sdW1uLnRvb2x0aXBDbGFzc1wiIFtuZ0NsYXNzXT1cImNvbHVtbi5jZWxsTmdDbGFzcz9jb2x1bW4uY2VsbE5nQ2xhc3Mocm93KTp7J3RleHQtcmlnaHQnOiBjb2x1bW4uYXJyb3dCZWZvcmV9XCIgW25nU3R5bGVdPVwie21heFdpZHRoOmNvbHVtbi5tYXhXaWR0aD8oY29sdW1uLm1heFdpZHRoKyhjb2x1bW4ubWF4V2lkdGhVbml0IHx8ICdweCcpKTpudWxsLG1pbldpZHRoOmNvbHVtbi5taW5XaWR0aD8oY29sdW1uLm1pbldpZHRoKyhjb2x1bW4ubWluV2lkdGhVbml0IHx8ICdweCcpKTpudWxsLHdpZHRoOmNvbHVtbi53aWR0aD8oY29sdW1uLndpZHRoKyhjb2x1bW4ud2lkdGhVbml0IHx8ICdweCcpKTpudWxsfVwiIFthdHRyLmd0LXhzXT1cImNvbHVtbi5zaG93R3RYc1wiIFthdHRyLmd0LXNtXT1cImNvbHVtbi5zaG93R3RTbVwiIFthdHRyLmd0LW1kXT1cImNvbHVtbi5zaG93R3RNZFwiIFthdHRyLmd0LWxnXT1cImNvbHVtbi5zaG93R3RMZ1wiIFthdHRyLmd0LXhsXT1cImNvbHVtbi5zaG93R3RYbFwiIFthdHRyLmd0LXh4bF09XCJjb2x1bW4uc2hvd0d0WHhsXCI+XHJcblx0XHRcdFx0PHNwYW4gKm5nSWY9XCIhY29sdW1uLnNob3J0RGF0ZVwiPnt7Y29sdW1uLmNvbnRlbnQocm93KSB8IGRhdGU6J2RkLk1NLnl5eXkgSEg6bW06c3MnfX08L3NwYW4+XHJcblx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjb2x1bW4uc2hvcnREYXRlXCI+e3tjb2x1bW4uY29udGVudChyb3cpIHwgZGF0ZTonZGQuTU0ueXl5eSd9fTwvc3Bhbj5cclxuXHRcdFx0PC90ZD5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdDwhLS0gI3JlZ2lvbiBBY3Rpb24gLS0+XHJcblx0XHQ8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLkFjdGlvblwiIFtjZGtDb2x1bW5EZWZdPVwiY29sdW1uLm5hbWVcIiBbc3RpY2t5XT1cImNvbHVtbi5zdGlja3lcIiBbc3RpY2t5RW5kXT1cImNvbHVtbi5zdGlja3lFbmRcIj5cclxuXHRcdFx0PHRoIG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZiBbYXR0ci5ndC14c109XCJjb2x1bW4uc2hvd0d0WHNcIiBbYXR0ci5ndC1zbV09XCJjb2x1bW4uc2hvd0d0U21cIiBbYXR0ci5ndC1tZF09XCJjb2x1bW4uc2hvd0d0TWRcIiBbYXR0ci5ndC1sZ109XCJjb2x1bW4uc2hvd0d0TGdcIiBbYXR0ci5ndC14bF09XCJjb2x1bW4uc2hvd0d0WGxcIiBbYXR0ci5ndC14eGxdPVwiY29sdW1uLnNob3dHdFh4bFwiPjwvdGg+XHJcblx0XHRcdDx0ZCBtYXQtY2VsbCAqY2RrQ2VsbERlZj1cImxldCByb3dcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW25nQ2xhc3NdPVwiY29sdW1uLmNlbGxOZ0NsYXNzP2NvbHVtbi5jZWxsTmdDbGFzcyhyb3cpOnsndGV4dC1yaWdodCc6IGNvbHVtbi5hcnJvd0JlZm9yZX1cIiBbYXR0ci5ndC14c109XCJjb2x1bW4uc2hvd0d0WHNcIiBbYXR0ci5ndC1zbV09XCJjb2x1bW4uc2hvd0d0U21cIiBbYXR0ci5ndC1tZF09XCJjb2x1bW4uc2hvd0d0TWRcIiBbYXR0ci5ndC1sZ109XCJjb2x1bW4uc2hvd0d0TGdcIiBbYXR0ci5ndC14bF09XCJjb2x1bW4uc2hvd0d0WGxcIiBbYXR0ci5ndC14eGxdPVwiY29sdW1uLnNob3dHdFh4bFwiPlxyXG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93TWVudUl0ZW1zPy5sZW5ndGggPiAwXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGlkPVwibWVudS17e3Jvdy5pZH19XCIgc3R5bGU9XCJ2aXNpYmlsaXR5OiBoaWRkZW47IHBvc2l0aW9uOiBmaXhlZDtcIiAjY29udGV4dE1lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiICpuZ0lmPVwiIXJvdy5sb2NrZWQgJiYgaGFzVmlzaWJsZVJvd01lbnVJdGVtcyhyb3csIGNvbHVtbilcIj48L2Rpdj5cclxuXHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbbWF0LW1lbnUtdHJpZ2dlci1mb3JdPVwibWVudVwiIFtkaXNhYmxlZF09XCJyb3cubG9ja2VkIHx8ICFoYXNWaXNpYmxlUm93TWVudUl0ZW1zKHJvdywgY29sdW1uKVwiPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PG1hdC1tZW51IHgtcG9zaXRpb249XCJiZWZvcmVcIiAjbWVudT1cIm1hdE1lbnVcIj5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVudUl0ZW0gb2YgY29sdW1uLnJvd01lbnVJdGVtc1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVudUl0ZW0uc3ViSXRlbXNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm1lbnVJdGVtLmV2ZW50P21lbnVJdGVtLmV2ZW50KHJvdyk6bnVsbFwiICpuZ0lmPVwiIW1lbnVJdGVtLmhpZGUgfHwgIW1lbnVJdGVtLmhpZGUocm93KVwiIFtkaXNhYmxlZF09XCJtZW51SXRlbS5kaXNhYmxlICYmIG1lbnVJdGVtLmRpc2FibGUocm93KVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWljb24gZm9udFNldD1cInt7bWVudUl0ZW0uaWNvbkZvbnRTZXQgfHwgJ21hdGVyaWFsLWljb25zLW91dGxpbmVkJ319XCIgW2NsYXNzXT1cIm1lbnVJdGVtLmljb25DbGFzc1wiPnt7bWVudUl0ZW0uaWNvbiB8fCAncmFkaW9fYnV0dG9uX3VuY2hlY2tlZCd9fTwvbWF0LWljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuPnt7bWVudUl0ZW0udGl0bGV9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJtZW51SXRlbS5zdWJJdGVtc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1tZW51IHgtcG9zaXRpb249XCJiZWZvcmVcIiAjc3ViTWVudT1cIm1hdE1lbnVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVudVN1Ykl0ZW0gb2YgbWVudUl0ZW0uc3ViSXRlbXNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJtZW51U3ViSXRlbS5ldmVudD9tZW51U3ViSXRlbS5ldmVudChyb3cpOm51bGxcIiAqbmdJZj1cIiFtZW51U3ViSXRlbS5oaWRlIHx8ICFtZW51U3ViSXRlbS5oaWRlKHJvdylcIiBbZGlzYWJsZWRdPVwibWVudVN1Ykl0ZW0uZGlzYWJsZSAmJiBtZW51U3ViSXRlbS5kaXNhYmxlKHJvdylcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxtYXQtaWNvbiBmb250U2V0PVwie3ttZW51SXRlbS5pY29uRm9udFNldCB8fCAnbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQnfX1cIiBbY2xhc3NdPVwibWVudUl0ZW0uaWNvbkNsYXNzXCI+e3ttZW51U3ViSXRlbS5pY29uIHx8ICdyYWRpb19idXR0b25fdW5jaGVja2VkJ319PC9tYXQtaWNvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuPnt7bWVudVN1Ykl0ZW0udGl0bGV9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L21hdC1tZW51PlxyXG5cdFx0XHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSBbbWF0TWVudVRyaWdnZXJGb3JdPVwic3ViTWVudVwiICpuZ0lmPVwiIW1lbnVJdGVtLmhpZGUgfHwgIW1lbnVJdGVtLmhpZGUocm93KVwiIFtkaXNhYmxlZF09XCJtZW51SXRlbS5kaXNhYmxlICYmIG1lbnVJdGVtLmRpc2FibGUocm93KVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWljb24gZm9udFNldD1cInt7bWVudUl0ZW0uaWNvbkZvbnRTZXQgfHwgJ21hdGVyaWFsLWljb25zLW91dGxpbmVkJ319XCIgW2NsYXNzXT1cIm1lbnVJdGVtLmljb25DbGFzc1wiPnt7bWVudUl0ZW0uaWNvbiB8fCAncmFkaW9fYnV0dG9uX3VuY2hlY2tlZCd9fTwvbWF0LWljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuPnt7bWVudUl0ZW0udGl0bGV9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdDwvbWF0LW1lbnU+XHJcblx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwvdGQ+XHJcblx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHQ8IS0tICNyZWdpb24gVGV4dCBJbnB1dCBjb2x1bW4gLS0+XHJcblx0XHQ8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLlRleHRJbnB1dFwiIFtjZGtDb2x1bW5EZWZdPVwiY29sdW1uLm5hbWVcIiBbc3RpY2t5XT1cImNvbHVtbi5zdGlja3lcIiBbc3RpY2t5RW5kXT1cImNvbHVtbi5zdGlja3lFbmRcIj5cclxuXHRcdFx0PHRoIG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZiBbbWF0LXNvcnQtaGVhZGVyXT1cImNvbHVtbi5zb3J0QnkgfHwgY29sdW1uLm5hbWVcIiBbbmdTdHlsZV09XCJ7bWF4V2lkdGg6Y29sdW1uLm1heFdpZHRoPyhjb2x1bW4ubWF4V2lkdGgrKGNvbHVtbi5tYXhXaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsbWluV2lkdGg6Y29sdW1uLm1pbldpZHRoPyhjb2x1bW4ubWluV2lkdGgrKGNvbHVtbi5taW5XaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsd2lkdGg6Y29sdW1uLndpZHRoPyhjb2x1bW4ud2lkdGgrKGNvbHVtbi53aWR0aFVuaXQgfHwgJ3B4JykpOm51bGx9XCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZFwiIFthdHRyLmd0LXhzXT1cImNvbHVtbi5zaG93R3RYc1wiIFthdHRyLmd0LXNtXT1cImNvbHVtbi5zaG93R3RTbVwiIFthdHRyLmd0LW1kXT1cImNvbHVtbi5zaG93R3RNZFwiIFthdHRyLmd0LWxnXT1cImNvbHVtbi5zaG93R3RMZ1wiIFthdHRyLmd0LXhsXT1cImNvbHVtbi5zaG93R3RYbFwiIFthdHRyLmd0LXh4bF09XCJjb2x1bW4uc2hvd0d0WHhsXCIgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uLmFycm93QmVmb3JlPydiZWZvcmUnOidhZnRlcidcIj57e2NvbHVtbi5oZWFkZXJ9fTwvdGg+XHJcblx0XHRcdDx0ZCBtYXQtY2VsbCAqY2RrQ2VsbERlZj1cImxldCByb3c7IGxldCByb3dJbmRleCA9IGluZGV4XCIgW21hdFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXA/Y29sdW1uLnRvb2x0aXAocm93KTpudWxsXCIgW21hdFRvb2x0aXBDbGFzc109XCJjb2x1bW4udG9vbHRpcENsYXNzXCIgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiBbbmdDbGFzc109XCJjb2x1bW4uY2VsbE5nQ2xhc3M/Y29sdW1uLmNlbGxOZ0NsYXNzKHJvdyk6eyd0ZXh0LXJpZ2h0JzogY29sdW1uLmFycm93QmVmb3JlfVwiIFtuZ1N0eWxlXT1cInttYXhXaWR0aDpjb2x1bW4ubWF4V2lkdGg/KGNvbHVtbi5tYXhXaWR0aCsoY29sdW1uLm1heFdpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCxtaW5XaWR0aDpjb2x1bW4ubWluV2lkdGg/KGNvbHVtbi5taW5XaWR0aCsoY29sdW1uLm1pbldpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCx3aWR0aDpjb2x1bW4ud2lkdGg/KGNvbHVtbi53aWR0aCsoY29sdW1uLndpZHRoVW5pdCB8fCAncHgnKSk6bnVsbH1cIiBbYXR0ci5ndC14c109XCJjb2x1bW4uc2hvd0d0WHNcIiBbYXR0ci5ndC1zbV09XCJjb2x1bW4uc2hvd0d0U21cIiBbYXR0ci5ndC1tZF09XCJjb2x1bW4uc2hvd0d0TWRcIiBbYXR0ci5ndC1sZ109XCJjb2x1bW4uc2hvd0d0TGdcIiBbYXR0ci5ndC14bF09XCJjb2x1bW4uc2hvd0d0WGxcIiBbYXR0ci5ndC14eGxdPVwiY29sdW1uLnNob3dHdFh4bFwiPlxyXG5cdFx0XHRcdDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGxheW91dD1cImNvbHVtblwiIGxheW91dC1hbGlnbj1cImNlbnRlciBzdGFydFwiPlxyXG5cdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ7e2NvbHVtbi5pbnB1dFR5cGV9fVwiIG1hdElucHV0IG5hbWU9XCJ7e2NvbHVtbi5uYW1lfX17e3Jvd0luZGV4fX1cIiBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4ubmFtZV1cIiBbZGlzYWJsZWRdPVwicmVhZG9ubHkgfHwgKGNvbHVtbi5kaXNhYmxlZCB8fCAoY29sdW1uLmRpc2FibGUgJiYgY29sdW1uLmRpc2FibGUocm93KSkpXCIgKG5nTW9kZWxDaGFuZ2UpPVwicGF0Y2gocm93LCBbY29sdW1uLm5hbWVdLCByb3dbY29sdW1uLm5hbWVdLCBjb2x1bW4ucGF0Y2hJbmNsdWRlcylcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3VwZGF0ZU9uOiAnYmx1cid9XCIgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnRhcmdldC5ibHVyKCk7ZmFsc2VcIj5cclxuXHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHQ8L3RkPlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0PCEtLSAjcmVnaW9uIE90aGVyIGNvbHVtbiB0eXBlcyAtLT5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdCBbY2RrQ29sdW1uRGVmXT1cImNvbHVtbi5uYW1lXCIgW3N0aWNreV09XCJjb2x1bW4uc3RpY2t5XCIgW3N0aWNreUVuZF09XCJjb2x1bW4uc3RpY2t5RW5kXCI+XHJcblx0XHRcdDx0aCBtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEJ5IHx8IGNvbHVtbi5uYW1lXCIgW25nU3R5bGVdPVwie21heFdpZHRoOmNvbHVtbi5tYXhXaWR0aD8oY29sdW1uLm1heFdpZHRoKyhjb2x1bW4ubWF4V2lkdGhVbml0IHx8ICdweCcpKTpudWxsLG1pbldpZHRoOmNvbHVtbi5taW5XaWR0aD8oY29sdW1uLm1pbldpZHRoKyhjb2x1bW4ubWluV2lkdGhVbml0IHx8ICdweCcpKTpudWxsLHdpZHRoOmNvbHVtbi53aWR0aD8oY29sdW1uLndpZHRoKyhjb2x1bW4ud2lkdGhVbml0IHx8ICdweCcpKTpudWxsfVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uZGlzYWJsZWRcIiBbYXR0ci5ndC14c109XCJjb2x1bW4uc2hvd0d0WHNcIiBbYXR0ci5ndC1zbV09XCJjb2x1bW4uc2hvd0d0U21cIiBbYXR0ci5ndC1tZF09XCJjb2x1bW4uc2hvd0d0TWRcIiBbYXR0ci5ndC1sZ109XCJjb2x1bW4uc2hvd0d0TGdcIiBbYXR0ci5ndC14bF09XCJjb2x1bW4uc2hvd0d0WGxcIiBbYXR0ci5ndC14eGxdPVwiY29sdW1uLnNob3dHdFh4bFwiIFthcnJvd1Bvc2l0aW9uXT1cImNvbHVtbi5hcnJvd0JlZm9yZT8nYmVmb3JlJzonYWZ0ZXInXCI+e3tjb2x1bW4uaGVhZGVyfX08L3RoPlxyXG5cdFx0XHQ8dGQgbWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93XCIgW21hdFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXA/Y29sdW1uLnRvb2x0aXAocm93KTpudWxsXCIgW21hdFRvb2x0aXBDbGFzc109XCJjb2x1bW4udG9vbHRpcENsYXNzXCIgW25nQ2xhc3NdPVwiY29sdW1uLmNlbGxOZ0NsYXNzP2NvbHVtbi5jZWxsTmdDbGFzcyhyb3cpOnsndGV4dC1yaWdodCc6IGNvbHVtbi5hcnJvd0JlZm9yZX1cIiBbbmdTdHlsZV09XCJ7bWF4V2lkdGg6Y29sdW1uLm1heFdpZHRoPyhjb2x1bW4ubWF4V2lkdGgrKGNvbHVtbi5tYXhXaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsbWluV2lkdGg6Y29sdW1uLm1pbldpZHRoPyhjb2x1bW4ubWluV2lkdGgrKGNvbHVtbi5taW5XaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsd2lkdGg6Y29sdW1uLndpZHRoPyhjb2x1bW4ud2lkdGgrKGNvbHVtbi53aWR0aFVuaXQgfHwgJ3B4JykpOm51bGx9XCIgW2F0dHIuZ3QteHNdPVwiY29sdW1uLnNob3dHdFhzXCIgW2F0dHIuZ3Qtc21dPVwiY29sdW1uLnNob3dHdFNtXCIgW2F0dHIuZ3QtbWRdPVwiY29sdW1uLnNob3dHdE1kXCIgW2F0dHIuZ3QtbGddPVwiY29sdW1uLnNob3dHdExnXCIgW2F0dHIuZ3QteGxdPVwiY29sdW1uLnNob3dHdFhsXCIgW2F0dHIuZ3QteHhsXT1cImNvbHVtbi5zaG93R3RYeGxcIj5cclxuXHRcdFx0XHQ8c3BhbiAqbmdJZj1cImNvbHVtbi5jb250ZW50XCIgW2lubmVySHRtbF09XCJjb2x1bW4uY29udGVudChyb3cpXCI+PC9zcGFuPlxyXG5cdFx0XHQ8L3RkPlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBGaWx0ZXIgcm93IC0tPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhU291cmNlICYmIGZpbHRlcmFibGVcIj5cclxuXHRcdDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCI+XHJcblx0XHRcdDwhLS0gI3JlZ2lvbiBObyBmaWx0ZXIgZm9yIGNoZWNrYm94IC0tPlxyXG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLk5vbmUgfHwgQ29sdW1uVHlwZS5DaGVja2JveFwiIGNka0NvbHVtbkRlZj1cImZpbHRlci57e2NvbHVtbi5maWx0ZXIgfHwgY29sdW1uLm5hbWV9fVwiPlxyXG5cdFx0XHRcdDx0aCBtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgW25nU3R5bGVdPVwie21heFdpZHRoOmNvbHVtbi5tYXhXaWR0aD8oY29sdW1uLm1heFdpZHRoKyhjb2x1bW4ubWF4V2lkdGhVbml0IHx8ICdweCcpKTpudWxsLG1pbldpZHRoOmNvbHVtbi5taW5XaWR0aD8oY29sdW1uLm1pbldpZHRoKyhjb2x1bW4ubWluV2lkdGhVbml0IHx8ICdweCcpKTpudWxsLHdpZHRoOmNvbHVtbi53aWR0aD8oY29sdW1uLndpZHRoKyhjb2x1bW4ud2lkdGhVbml0IHx8ICdweCcpKTpudWxsfVwiIFthdHRyLmd0LXhzXT1cImNvbHVtbi5zaG93R3RYc1wiIFthdHRyLmd0LXNtXT1cImNvbHVtbi5zaG93R3RTbVwiIFthdHRyLmd0LW1kXT1cImNvbHVtbi5zaG93R3RNZFwiIFthdHRyLmd0LWxnXT1cImNvbHVtbi5zaG93R3RMZ1wiIFthdHRyLmd0LXhsXT1cImNvbHVtbi5zaG93R3RYbFwiIFthdHRyLmd0LXh4bF09XCJjb2x1bW4uc2hvd0d0WHhsXCI+PC90aD5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdDwhLS0gI3JlZ2lvbiBUZXh0IGZpbHRlciAtLT5cclxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiQ29sdW1uVHlwZS5UZXh0XCIgY2RrQ29sdW1uRGVmPVwiZmlsdGVyLnt7Y29sdW1uLmZpbHRlciB8fCBjb2x1bW4ubmFtZX19XCI+XHJcblx0XHRcdFx0PHRoIG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZiBmaWx0ZXItaW5wdXQgW29ubHlOdW1iZXJdPVwiY29sdW1uLmZpbHRlcklucHV0TnVtYmVyXCIgW29wZXJhdG9yXT1cImNvbHVtbi5maWx0ZXJPcGVyYXRvclwiIFtuZ1N0eWxlXT1cInttYXhXaWR0aDpjb2x1bW4ubWF4V2lkdGg/KGNvbHVtbi5tYXhXaWR0aCsoY29sdW1uLm1heFdpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCxtaW5XaWR0aDpjb2x1bW4ubWluV2lkdGg/KGNvbHVtbi5taW5XaWR0aCsoY29sdW1uLm1pbldpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCx3aWR0aDpjb2x1bW4ud2lkdGg/KGNvbHVtbi53aWR0aCsoY29sdW1uLndpZHRoVW5pdCB8fCAncHgnKSk6bnVsbH1cIiBbYXR0ci5ndC14c109XCJjb2x1bW4uc2hvd0d0WHNcIiBbYXR0ci5ndC1zbV09XCJjb2x1bW4uc2hvd0d0U21cIiBbYXR0ci5ndC1tZF09XCJjb2x1bW4uc2hvd0d0TWRcIiBbYXR0ci5ndC1sZ109XCJjb2x1bW4uc2hvd0d0TGdcIiBbYXR0ci5ndC14bF09XCJjb2x1bW4uc2hvd0d0WGxcIiBbYXR0ci5ndC14eGxdPVwiY29sdW1uLnNob3dHdFh4bFwiPjwvdGg+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHQ8IS0tICNyZWdpb24gVGV4dElucHV0IGZpbHRlciAtLT5cclxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiQ29sdW1uVHlwZS5UZXh0SW5wdXRcIiBjZGtDb2x1bW5EZWY9XCJmaWx0ZXIue3tjb2x1bW4uZmlsdGVyIHx8IGNvbHVtbi5uYW1lfX1cIj5cclxuXHRcdFx0XHQ8dGggbWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmIGZpbHRlci1pbnB1dCBbb25seU51bWJlcl09XCJjb2x1bW4uZmlsdGVySW5wdXROdW1iZXJcIiBbb3BlcmF0b3JdPVwiY29sdW1uLmZpbHRlck9wZXJhdG9yXCIgW25nU3R5bGVdPVwie21heFdpZHRoOmNvbHVtbi5tYXhXaWR0aD8oY29sdW1uLm1heFdpZHRoKyhjb2x1bW4ubWF4V2lkdGhVbml0IHx8ICdweCcpKTpudWxsLG1pbldpZHRoOmNvbHVtbi5taW5XaWR0aD8oY29sdW1uLm1pbldpZHRoKyhjb2x1bW4ubWluV2lkdGhVbml0IHx8ICdweCcpKTpudWxsLHdpZHRoOmNvbHVtbi53aWR0aD8oY29sdW1uLndpZHRoKyhjb2x1bW4ud2lkdGhVbml0IHx8ICdweCcpKTpudWxsfVwiIFthdHRyLmd0LXhzXT1cImNvbHVtbi5zaG93R3RYc1wiIFthdHRyLmd0LXNtXT1cImNvbHVtbi5zaG93R3RTbVwiIFthdHRyLmd0LW1kXT1cImNvbHVtbi5zaG93R3RNZFwiIFthdHRyLmd0LWxnXT1cImNvbHVtbi5zaG93R3RMZ1wiIFthdHRyLmd0LXhsXT1cImNvbHVtbi5zaG93R3RYbFwiIFthdHRyLmd0LXh4bF09XCJjb2x1bW4uc2hvd0d0WHhsXCI+PC90aD5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdDwhLS0gI3JlZ2lvbiBOdW1iZXIgZmlsdGVyIC0tPlxyXG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLk51bWJlclwiIGNka0NvbHVtbkRlZj1cImZpbHRlci57e2NvbHVtbi5maWx0ZXIgfHwgY29sdW1uLm5hbWV9fVwiPlxyXG5cdFx0XHRcdDx0aCBtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgZmlsdGVyLWlucHV0IFtvbmx5TnVtYmVyXT1cImNvbHVtbi5maWx0ZXJJbnB1dE51bWJlclwiIFtvcGVyYXRvcl09XCJjb2x1bW4uZmlsdGVyT3BlcmF0b3JcIiBbbmdTdHlsZV09XCJ7bWF4V2lkdGg6Y29sdW1uLm1heFdpZHRoPyhjb2x1bW4ubWF4V2lkdGgrKGNvbHVtbi5tYXhXaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsbWluV2lkdGg6Y29sdW1uLm1pbldpZHRoPyhjb2x1bW4ubWluV2lkdGgrKGNvbHVtbi5taW5XaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsd2lkdGg6Y29sdW1uLndpZHRoPyhjb2x1bW4ud2lkdGgrKGNvbHVtbi53aWR0aFVuaXQgfHwgJ3B4JykpOm51bGx9XCIgW2F0dHIuZ3QteHNdPVwiY29sdW1uLnNob3dHdFhzXCIgW2F0dHIuZ3Qtc21dPVwiY29sdW1uLnNob3dHdFNtXCIgW2F0dHIuZ3QtbWRdPVwiY29sdW1uLnNob3dHdE1kXCIgW2F0dHIuZ3QtbGddPVwiY29sdW1uLnNob3dHdExnXCIgW2F0dHIuZ3QteGxdPVwiY29sdW1uLnNob3dHdFhsXCIgW2F0dHIuZ3QteHhsXT1cImNvbHVtbi5zaG93R3RYeGxcIj48L3RoPlxyXG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0PCEtLSAjcmVnaW9uIFNlbGVjdCBmaWx0ZXIgLS0+XHJcblx0XHRcdDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuU2VsZWN0XCIgY2RrQ29sdW1uRGVmPVwiZmlsdGVyLnt7Y29sdW1uLmZpbHRlciB8fCBjb2x1bW4ubmFtZX19XCI+XHJcblx0XHRcdFx0PHRoIG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZiBmaWx0ZXItc2VsZWN0IFtlbmRwb2ludF09XCJjb2x1bW4uZW5kcG9pbnRcIiBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9uc1wiIFt0ZXh0XT1cImNvbHVtbi5maWx0ZXJPcHRpb25UZXh0IHx8ICduYW1lJ1wiIFtuZ1N0eWxlXT1cInttYXhXaWR0aDpjb2x1bW4ubWF4V2lkdGg/KGNvbHVtbi5tYXhXaWR0aCsoY29sdW1uLm1heFdpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCxtaW5XaWR0aDpjb2x1bW4ubWluV2lkdGg/KGNvbHVtbi5taW5XaWR0aCsoY29sdW1uLm1pbldpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCx3aWR0aDpjb2x1bW4ud2lkdGg/KGNvbHVtbi53aWR0aCsoY29sdW1uLndpZHRoVW5pdCB8fCAncHgnKSk6bnVsbH1cIiBbYXR0ci5ndC14c109XCJjb2x1bW4uc2hvd0d0WHNcIiBbYXR0ci5ndC1zbV09XCJjb2x1bW4uc2hvd0d0U21cIiBbYXR0ci5ndC1tZF09XCJjb2x1bW4uc2hvd0d0TWRcIiBbYXR0ci5ndC1sZ109XCJjb2x1bW4uc2hvd0d0TGdcIiBbYXR0ci5ndC14bF09XCJjb2x1bW4uc2hvd0d0WGxcIiBbYXR0ci5ndC14eGxdPVwiY29sdW1uLnNob3dHdFh4bFwiPjwvdGg+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHQ8IS0tICNyZWdpb24gRW51bSBmaWx0ZXIgLS0+XHJcblx0XHRcdDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuRW51bVwiIGNka0NvbHVtbkRlZj1cImZpbHRlci57e2NvbHVtbi5maWx0ZXIgfHwgY29sdW1uLm5hbWV9fVwiPlxyXG5cdFx0XHRcdDx0aCBtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgZmlsdGVyLXNlbGVjdCBbZW51bV09XCJjb2x1bW4uZW51bVR5cGVcIiBbcHJlZml4XT1cImNvbHVtbi5lbnVtUHJlZml4XCIgW25nU3R5bGVdPVwie21heFdpZHRoOmNvbHVtbi5tYXhXaWR0aD8oY29sdW1uLm1heFdpZHRoKyhjb2x1bW4ubWF4V2lkdGhVbml0IHx8ICdweCcpKTpudWxsLG1pbldpZHRoOmNvbHVtbi5taW5XaWR0aD8oY29sdW1uLm1pbldpZHRoKyhjb2x1bW4ubWluV2lkdGhVbml0IHx8ICdweCcpKTpudWxsLHdpZHRoOmNvbHVtbi53aWR0aD8oY29sdW1uLndpZHRoKyhjb2x1bW4ud2lkdGhVbml0IHx8ICdweCcpKTpudWxsfVwiIFthdHRyLmd0LXhzXT1cImNvbHVtbi5zaG93R3RYc1wiIFthdHRyLmd0LXNtXT1cImNvbHVtbi5zaG93R3RTbVwiIFthdHRyLmd0LW1kXT1cImNvbHVtbi5zaG93R3RNZFwiIFthdHRyLmd0LWxnXT1cImNvbHVtbi5zaG93R3RMZ1wiIFthdHRyLmd0LXhsXT1cImNvbHVtbi5zaG93R3RYbFwiIFthdHRyLmd0LXh4bF09XCJjb2x1bW4uc2hvd0d0WHhsXCI+PC90aD5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdDwhLS0gI3JlZ2lvbiBUb2dnbGUgZmlsdGVyIC0tPlxyXG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLlRvZ2dsZVwiIGNka0NvbHVtbkRlZj1cImZpbHRlci57e2NvbHVtbi5maWx0ZXIgfHwgY29sdW1uLm5hbWV9fVwiPlxyXG5cdFx0XHRcdDx0aCBtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgZmlsdGVyLXNlbGVjdCBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9uc1wiIFtuZ1N0eWxlXT1cInttYXhXaWR0aDpjb2x1bW4ubWF4V2lkdGg/KGNvbHVtbi5tYXhXaWR0aCsoY29sdW1uLm1heFdpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCxtaW5XaWR0aDpjb2x1bW4ubWluV2lkdGg/KGNvbHVtbi5taW5XaWR0aCsoY29sdW1uLm1pbldpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCx3aWR0aDpjb2x1bW4ud2lkdGg/KGNvbHVtbi53aWR0aCsoY29sdW1uLndpZHRoVW5pdCB8fCAncHgnKSk6bnVsbH1cIiBbYXR0ci5ndC14c109XCJjb2x1bW4uc2hvd0d0WHNcIiBbYXR0ci5ndC1zbV09XCJjb2x1bW4uc2hvd0d0U21cIiBbYXR0ci5ndC1tZF09XCJjb2x1bW4uc2hvd0d0TWRcIiBbYXR0ci5ndC1sZ109XCJjb2x1bW4uc2hvd0d0TGdcIiBbYXR0ci5ndC14bF09XCJjb2x1bW4uc2hvd0d0WGxcIiBbYXR0ci5ndC14eGxdPVwiY29sdW1uLnNob3dHdFh4bFwiPjwvdGg+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHQ8IS0tICNyZWdpb24gRGF0ZSBmaWx0ZXIgLS0+XHJcblx0XHRcdDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuRGF0ZVwiIGNka0NvbHVtbkRlZj1cImZpbHRlci57e2NvbHVtbi5maWx0ZXIgfHwgY29sdW1uLm5hbWV9fVwiPlxyXG5cdFx0XHRcdDx0aCBtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgZmlsdGVyLWRhdGUgW25nU3R5bGVdPVwie21heFdpZHRoOmNvbHVtbi5tYXhXaWR0aD8oY29sdW1uLm1heFdpZHRoKyhjb2x1bW4ubWF4V2lkdGhVbml0IHx8ICdweCcpKTpudWxsLG1pbldpZHRoOmNvbHVtbi5taW5XaWR0aD8oY29sdW1uLm1pbldpZHRoKyhjb2x1bW4ubWluV2lkdGhVbml0IHx8ICdweCcpKTpudWxsLHdpZHRoOmNvbHVtbi53aWR0aD8oY29sdW1uLndpZHRoKyhjb2x1bW4ud2lkdGhVbml0IHx8ICdweCcpKTpudWxsfVwiIFthdHRyLmd0LXhzXT1cImNvbHVtbi5zaG93R3RYc1wiIFthdHRyLmd0LXNtXT1cImNvbHVtbi5zaG93R3RTbVwiIFthdHRyLmd0LW1kXT1cImNvbHVtbi5zaG93R3RNZFwiIFthdHRyLmd0LWxnXT1cImNvbHVtbi5zaG93R3RMZ1wiIFthdHRyLmd0LXhsXT1cImNvbHVtbi5zaG93R3RYbFwiIFthdHRyLmd0LXh4bF09XCJjb2x1bW4uc2hvd0d0WHhsXCI+PC90aD5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdDwhLS0gI3JlZ2lvbiBBY3Rpb24gZmlsdGVyIChjbGVhcikgLS0+XHJcblx0XHRcdDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuQWN0aW9uXCIgY2RrQ29sdW1uRGVmPVwiZmlsdGVyLnt7Y29sdW1uLmZpbHRlciB8fCBjb2x1bW4ubmFtZX19XCI+XHJcblx0XHRcdFx0PHRoIG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZiBmaWx0ZXItY2xlYXIgW25nU3R5bGVdPVwie21heFdpZHRoOmNvbHVtbi5tYXhXaWR0aD8oY29sdW1uLm1heFdpZHRoKyhjb2x1bW4ubWF4V2lkdGhVbml0IHx8ICdweCcpKTpudWxsLG1pbldpZHRoOmNvbHVtbi5taW5XaWR0aD8oY29sdW1uLm1pbldpZHRoKyhjb2x1bW4ubWluV2lkdGhVbml0IHx8ICdweCcpKTpudWxsLHdpZHRoOmNvbHVtbi53aWR0aD8oY29sdW1uLndpZHRoKyhjb2x1bW4ud2lkdGhVbml0IHx8ICdweCcpKTpudWxsfVwiIFthdHRyLmd0LXhzXT1cImNvbHVtbi5zaG93R3RYc1wiIFthdHRyLmd0LXNtXT1cImNvbHVtbi5zaG93R3RTbVwiIFthdHRyLmd0LW1kXT1cImNvbHVtbi5zaG93R3RNZFwiIFthdHRyLmd0LWxnXT1cImNvbHVtbi5zaG93R3RMZ1wiIFthdHRyLmd0LXhsXT1cImNvbHVtbi5zaG93R3RYbFwiIFthdHRyLmd0LXh4bF09XCJjb2x1bW4uc2hvd0d0WHhsXCI+PC90aD5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cdDwvbmctY29udGFpbmVyPlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0PCEtLSAjcmVnaW9uIERldGFpbHMgY29sdW1uIC0tPlxyXG5cdDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cclxuXHRcdDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBbYXR0ci5jb2xzcGFuXT1cImRpc3BsYXllZENvbHVtbnMubGVuZ3RoXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJyb3ctZGV0YWlsXCIgW0BkZXRhaWxFeHBhbmRdPVwicm93ID09IGV4cGFuZGVkUm93ID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCIgI2RldGFpbHNUZW1wbGF0ZT48L2Rpdj5cclxuXHRcdDwvdGQ+XHJcblx0PC9uZy1jb250YWluZXI+XHJcblx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyYWJsZVwiPlxyXG5cdFx0PHRyIG1hdC1oZWFkZXItcm93ICpjZGtIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRGaWx0ZXJDb2x1bW5zXCI+PC90cj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8dHIgbWF0LWhlYWRlci1yb3cgKmNka0hlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogc3RpY2t5RmlsdGVyXCI+PC90cj5cclxuXHQ8dHIgbWF0LXJvdyAqY2RrUm93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uczsgbGV0IGluZGV4ID0gZGF0YUluZGV4XCIgW25nQ2xhc3NdPVwicm93TmdDbGFzcz9yb3dOZ0NsYXNzKHJvdyk6bnVsbFwiIFtjbGFzcy5leHBhbmRlZC1yb3ddPVwiZXhwYW5kZWRSb3cgPT09IHJvd1wiIChjbGljayk9XCJoYW5kbGVSb3dDbGljayhpbmRleCwgcm93KVwiIChjb250ZXh0bWVudSk9XCJoYW5kbGVSb3dSaWdodENsaWNrKCRldmVudCwgcm93KVwiPjwvdHI+XHJcblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNUZW1wbGF0ZVwiPlxyXG5cdFx0PHRyIG1hdC1yb3cgKmNka1Jvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZXhwYW5kZWREZXRhaWwnXVwiIGNsYXNzPVwiZGV0YWlsLXJvd1wiIFtuZ0NsYXNzXT1cInJvd05nQ2xhc3M/cm93TmdDbGFzcyhyb3cpOm51bGxcIj48L3RyPlxyXG5cdDwvbmctY29udGFpbmVyPlxyXG48L3RhYmxlPlxyXG48IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG48IS0tICNyZWdpb24gUm93IHNob3duIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgZGF0YS4tLT5cclxuPGRpdiBjbGFzcz1cIm1hdC1jZWxsIHBhZCB0Yy1ncmV5LTcwMCBiZ2MtZ3JleS0yMDAgdHh0LWl0YWxpY1wiICpuZ0lmPVwiIWRhdGFTb3VyY2UuZmlsdGVyZWREYXRhPy5sZW5ndGggJiYgIWRhdGFTb3VyY2UudG90YWxcIiBpMThuPVwiQEBub1Jlc3VsdHNGb3VuZFwiPk5vIHJlc3VsdHMgd2VyZSBmb3VuZC48L2Rpdj5cclxuPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuPG1hdC1wYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmFibGVcIiBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIHNob3dGaXJzdExhc3RCdXR0b25zPVwidHJ1ZVwiPjwvbWF0LXBhZ2luYXRvcj4iXX0=
|