@simpleangularcontrols/sac-common 13.0.0-rc.12 → 13.0.0-rc.13
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/controls/input/input.d.ts +4 -4
- package/controls/input/input.d.ts.map +1 -1
- package/controls/input/inputarea.d.ts +6 -6
- package/controls/input/inputarea.d.ts.map +1 -1
- package/controls/input/inputpassword.d.ts +8 -8
- package/controls/input/inputpassword.d.ts.map +1 -1
- package/controls/multilanguage/multilanguageinput.d.ts +3 -3
- package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
- package/controls/multilanguage/multilanguageinputarea.d.ts +5 -5
- package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
- package/esm2020/controls/input/input.mjs +6 -6
- package/esm2020/controls/input/inputarea.mjs +17 -12
- package/esm2020/controls/input/inputpassword.mjs +10 -10
- package/esm2020/controls/multilanguage/multilanguageinput.mjs +5 -5
- package/esm2020/controls/multilanguage/multilanguageinputarea.mjs +6 -6
- package/esm2020/interfaces/ISacValidationKeyService.mjs +3 -3
- package/esm2020/services/sac-localisation.service.mjs +21 -20
- package/esm2020/services/sac-validationkey.service.mjs +5 -5
- package/esm2020/validation/mintextlength.validator.mjs +5 -0
- package/esm2020/validation/mintextlength.validator.ngfactory.mjs +3 -0
- package/esm2020/validation/mintextlength.validator.ngsummary.mjs +3 -0
- package/esm2020/validation/validation.mjs +68 -63
- package/fesm2015/simpleangularcontrols-sac-common.mjs +1099 -1086
- package/fesm2015/simpleangularcontrols-sac-common.mjs.map +1 -1
- package/fesm2020/simpleangularcontrols-sac-common.mjs +1102 -1089
- package/fesm2020/simpleangularcontrols-sac-common.mjs.map +1 -1
- package/interfaces/ISacValidationKeyService.d.ts +2 -2
- package/interfaces/ISacValidationKeyService.d.ts.map +1 -1
- package/package.json +1 -1
- package/services/sac-localisation.service.d.ts +10 -10
- package/services/sac-localisation.service.d.ts.map +1 -1
- package/services/sac-validationkey.service.d.ts +2 -2
- package/services/sac-validationkey.service.d.ts.map +1 -1
- package/simpleangularcontrols-sac-common-13.0.0-rc.13.tgz +0 -0
- package/validation/mintextlength.validator.d.ts +3 -0
- package/validation/mintextlength.validator.d.ts.map +1 -0
- package/validation/mintextlength.validator.ngfactory.d.ts +2 -0
- package/validation/mintextlength.validator.ngfactory.d.ts.map +1 -0
- package/validation/mintextlength.validator.ngsummary.d.ts +2 -0
- package/validation/mintextlength.validator.ngsummary.d.ts.map +1 -0
- package/validation/validation.d.ts +56 -56
- package/validation/validation.d.ts.map +1 -1
- package/esm2020/validation/minlength.validator.mjs +0 -3
- package/esm2020/validation/minlength.validator.ngfactory.mjs +0 -3
- package/esm2020/validation/minlength.validator.ngsummary.mjs +0 -3
- package/simpleangularcontrols-sac-common-13.0.0-rc.12.tgz +0 -0
- package/validation/minlength.validator.d.ts +0 -3
- package/validation/minlength.validator.d.ts.map +0 -1
- package/validation/minlength.validator.ngfactory.d.ts +0 -2
- package/validation/minlength.validator.ngfactory.d.ts.map +0 -1
- package/validation/minlength.validator.ngsummary.d.ts +0 -2
- package/validation/minlength.validator.ngsummary.d.ts.map +0 -1
|
@@ -1,123 +1,128 @@
|
|
|
1
|
-
function cov_2htktrox8d(){var path="C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\validation\\validation.mjs";var hash="cb94a843218a35066202334fa8eea0f0e8911c17";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\validation\\validation.mjs",statementMap:{"0":{start:{line:32,column:8},end:{line:32,column:111}},"1":{start:{line:42,column:8},end:{line:42,column:78}},"2":{start:{line:54,column:8},end:{line:54,column:96}},"3":{start:{line:64,column:8},end:{line:64,column:88}},"4":{start:{line:75,column:8},end:{line:75,column:86}},"5":{start:{line:86,column:8},end:{line:86,column:88}},"6":{start:{line:96,column:8},end:{line:96,column:75}},"7":{start:{line:107,column:8},end:{line:107,column:90}},"8":{start:{line:118,column:8},end:{line:118,column:86}},"9":{start:{line:129,column:8},end:{line:129,column:86}},"10":{start:{line:140,column:8},end:{line:140,column:86}},"11":{start:{line:151,column:8},end:{line:151,column:86}},"12":{start:{line:161,column:8},end:{line:161,column:81}},"13":{start:{line:172,column:8},end:{line:172,column:88}},"14":{start:{line:183,column:8},end:{line:183,column:98}},"15":{start:{line:194,column:8},end:{line:194,column:102}},"16":{start:{line:205,column:8},end:{line:205,column:105}},"17":{start:{line:211,column:15},end:{line:211,column:33}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:31,column:4},end:{line:31,column:5}},loc:{start:{line:31,column:138},end:{line:33,column:5}},line:31},"1":{name:"(anonymous_1)",decl:{start:{line:41,column:4},end:{line:41,column:5}},loc:{start:{line:41,column:65},end:{line:43,column:5}},line:41},"2":{name:"(anonymous_2)",decl:{start:{line:53,column:4},end:{line:53,column:5}},loc:{start:{line:53,column:78},end:{line:55,column:5}},line:53},"3":{name:"(anonymous_3)",decl:{start:{line:63,column:4},end:{line:63,column:5}},loc:{start:{line:63,column:75},end:{line:65,column:5}},line:63},"4":{name:"(anonymous_4)",decl:{start:{line:74,column:4},end:{line:74,column:5}},loc:{start:{line:74,column:73},end:{line:76,column:5}},line:74},"5":{name:"(anonymous_5)",decl:{start:{line:85,column:4},end:{line:85,column:5}},loc:{start:{line:85,column:75},end:{line:87,column:5}},line:85},"6":{name:"(anonymous_6)",decl:{start:{line:95,column:4},end:{line:95,column:5}},loc:{start:{line:95,column:62},end:{line:97,column:5}},line:95},"7":{name:"(anonymous_7)",decl:{start:{line:106,column:4},end:{line:106,column:5}},loc:{start:{line:106,column:77},end:{line:108,column:5}},line:106},"8":{name:"(anonymous_8)",decl:{start:{line:117,column:4},end:{line:117,column:5}},loc:{start:{line:117,column:73},end:{line:119,column:5}},line:117},"9":{name:"(anonymous_9)",decl:{start:{line:128,column:4},end:{line:128,column:5}},loc:{start:{line:128,column:73},end:{line:130,column:5}},line:128},"10":{name:"(anonymous_10)",decl:{start:{line:139,column:4},end:{line:139,column:5}},loc:{start:{line:139,column:73},end:{line:141,column:5}},line:139},"11":{name:"(anonymous_11)",decl:{start:{line:150,column:4},end:{line:150,column:5}},loc:{start:{line:150,column:73},end:{line:152,column:5}},line:150},"12":{name:"(anonymous_12)",decl:{start:{line:160,column:4},end:{line:160,column:5}},loc:{start:{line:160,column:68},end:{line:162,column:5}},line:160},"13":{name:"(anonymous_13)",decl:{start:{line:171,column:4},end:{line:171,column:5}},loc:{start:{line:171,column:75},end:{line:173,column:5}},line:171},"14":{name:"(anonymous_14)",decl:{start:{line:182,column:4},end:{line:182,column:5}},loc:{start:{line:182,column:80},end:{line:184,column:5}},line:182},"15":{name:"(anonymous_15)",decl:{start:{line:193,column:4},end:{line:193,column:5}},loc:{start:{line:193,column:89},end:{line:195,column:5}},line:193},"16":{name:"(anonymous_16)",decl:{start:{line:204,column:4},end:{line:204,column:5}},loc:{start:{line:204,column:92},end:{line:206,column:5}},line:204}},branchMap:{"0":{loc:{start:{line:31,column:96},end:{line:31,column:112}},type:"default-arg",locations:[{start:{line:31,column:108},end:{line:31,column:112}}],line:31},"1":{loc:{start:{line:31,column:114},end:{line:31,column:136}},type:"default-arg",locations:[{start:{line:31,column:127},end:{line:31,column:136}}],line:31}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0},b:{"0":[0],"1":[0]},inputSourceMap:{version:3,file:"validation.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/validation/validation.ts"],names:[],mappings:"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",sourcesContent:["import * as moment_ from 'moment';\r\n\r\nimport { ValidatorFn } from '@angular/forms';\r\nimport { LanguageModel } from '../models/languagemodel';\r\nimport { emailValidator } from './email.validator';\r\nimport { equalsValueValidator } from './equals.validator';\r\nimport { isValidDateValidator } from './invaliddate.validator';\r\nimport { maxDateValidator } from './maxdate.validator';\r\nimport { maxTimeValidator } from './maxtime.validator';\r\nimport { maxValueValidator } from './maxvalue.validator';\r\nimport { minDateValidator } from './mindate.validator';\r\nimport { minFilesValidator } from './minfiles.validator';\r\nimport { minLengthValidator } from './minlength.validator';\r\nimport { minTimeValidator } from './mintime.validator';\r\nimport { minValueValidator } from './minvalue.validator';\r\nimport { multilanguageRequiredValidator } from './multilanguagerequired.validator';\r\nimport { multilanguageRequiredAnyValidator } from './multilanguagerequiredany.validator';\r\nimport { notEqualsValueValidator } from './notequals.validator';\r\nimport { patternValidator } from './pattern.validator';\r\nimport { requiredValidator } from './required.validator';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\n/**\r\n * Klasse mit Standard Validatoren\r\n */\r\nexport class Validation {\r\n /**\r\n * Die Methode ist von jedem Validator aufgerufen. Die setzt sowohl den errorType des gerp\xFCfte Item, als auch die ErrorMessage (gem\xE4ss von errorType, FieldName und Parameters).\r\n * @param errorType Typ den Fehler\r\n * @param errorMessageKey Error Message Key\r\n * @param errorMessageValidationSummaryKey Error Message Key f\xFCr Validation Summary\r\n * @param fieldName Label oder Name des Feldes\r\n * @param parameters Parametern die in den Meldungen als Platzhalter verwendet werden k\xF6nnen\r\n */\r\n static GetValidationErrorItem(\r\n errorType: string,\r\n errorMessageKey: string,\r\n errorMessageValidationSummaryKey: string,\r\n fieldName: string = null,\r\n parameters: Map<string, any> = new Map<string, any>()\r\n ): any {\r\n return CreateValidationError(\r\n errorType,\r\n errorMessageKey,\r\n errorMessageValidationSummaryKey,\r\n parameters\r\n );\r\n }\r\n\r\n /**\r\n * Validator f\xFCr Required State\r\n * @param control Control das Validiert wird\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static required(\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return requiredValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator validate if value is the requiredValue\r\n * @param requiredValue Value that control should have\r\n * @param control Control to be validate\r\n * @param fieldName Label of control\r\n * @param validationMessage validation message near the control\r\n * @param validationMessageSummary validation inside the validation summary\r\n\r\n */\r\n public static equals(\r\n requiredValue: any,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return equalsValueValidator(\r\n requiredValue,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator der pr\xFCft ob der Wert ein Datum ist.\r\n * @param control Control mit IDateTimeControl Interface implementierung\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minValue(\r\n minvalue: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minValueValidator(\r\n minvalue,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validierung mit einem RegEx Pattern\r\n * @param control Control das validiert werden soll.\r\n * @param pattern RegEx Pattern\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static pattern(\r\n pattern: string,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return patternValidator(\r\n pattern,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator f\xFCr Max Value\r\n * @param control Control das Validiert werden soll\r\n * @param maxvalue Max. Wert\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static maxValue(\r\n maxvalue: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return maxValueValidator(\r\n maxvalue,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert Feld auf E-Mail Adresse\r\n * @param control Control das Valdiert werden soll\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static email(\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return emailValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validiert auf die L\xE4nge des Wertes im Control\r\n * @param control Control das Validiert werden soll\r\n * @param minlength Min. L\xE4nge des Wertes\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minLength(\r\n minlength: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minLengthValidator(\r\n minlength,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob das Datum neuer als minDate ist\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param minDate Min. Datum\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minDate(\r\n minDate: Date,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minDateValidator(\r\n minDate,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob das Datum \xE4lter als maxDate ist\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param maxDate max. Datum\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static maxDate(\r\n maxDate: Date,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return maxDateValidator(\r\n maxDate,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob die Zeit sp\xE4ter als minTime ist.\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param minTime Min. Zeit\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minTime(\r\n minTime: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n ): ValidatorFn {\r\n return minTimeValidator(\r\n minTime,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob die Zeit fr\xFCher als maxTime ist.\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param maxTime Min. Zeit\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static maxTime(\r\n maxTime: Date,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return maxTimeValidator(\r\n maxTime,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator der pr\xFCft ob der Wert ein Datum ist.\r\n * @param control Control mit IDateTimeControl Interface implementierung\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die beim Control angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static isValidDate(\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return isValidDateValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator f\xFCr min. Anzahl von Uploads\r\n * @param control Control das Validatiert werden soll. Control muss IUploadControl implementiert haben\r\n * @param minFiles Min. Anzahl Files die hochgeladen werden m\xFCssen\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minFiles(\r\n minFiles: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minFilesValidator(\r\n minFiles,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator validate if value is not the invalidValue\r\n * @param invalidValue Value that control doesn't should have\r\n * @param control Control to be validate\r\n * @param fieldName Label of control\r\n * @param validationMessage validation message near the control\r\n * @param validationMessageSummary validation inside the validation summary\r\n */\r\n public static notequals(\r\n invalidValue: any,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return notEqualsValueValidator(\r\n invalidValue,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validierung mit einem RegEx Pattern\r\n * @param control Control das validiert werden soll.\r\n * @param pattern RegEx Pattern\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static multilanguageRequired(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return multilanguageRequiredValidator(\r\n languages,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator f\xFCr MultiLanguage Control, welcher \xFCberpr\xFCft ob min. ein Wert erfasst wurde\r\n * @param control Control das Validatiert werden soll\r\n * @param languages Sprachen die im Control erfasst werden k\xF6nnen.\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static multilanguageRequiredAny(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return multilanguageRequiredAnyValidator(\r\n languages,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"cb94a843218a35066202334fa8eea0f0e8911c17"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
|
|
2
|
-
cov_2htktrox8d=function(){return actualCoverage;};}return actualCoverage;}cov_2htktrox8d();import
|
|
1
|
+
function cov_2htktrox8d(){var path="C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\validation\\validation.mjs";var hash="4de13542acdc33aea65f44dc41719c20dbf197fd";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\validation\\validation.mjs",statementMap:{"0":{start:{line:23,column:15},end:{line:23,column:33}},"1":{start:{line:40,column:8},end:{line:40,column:111}},"2":{start:{line:50,column:8},end:{line:50,column:75}},"3":{start:{line:62,column:8},end:{line:62,column:96}},"4":{start:{line:72,column:8},end:{line:72,column:81}},"5":{start:{line:83,column:8},end:{line:83,column:86}},"6":{start:{line:94,column:8},end:{line:94,column:86}},"7":{start:{line:105,column:8},end:{line:105,column:88}},"8":{start:{line:116,column:8},end:{line:116,column:86}},"9":{start:{line:127,column:8},end:{line:127,column:88}},"10":{start:{line:138,column:8},end:{line:138,column:98}},"11":{start:{line:149,column:8},end:{line:149,column:86}},"12":{start:{line:159,column:8},end:{line:159,column:88}},"13":{start:{line:170,column:8},end:{line:170,column:102}},"14":{start:{line:181,column:8},end:{line:181,column:105}},"15":{start:{line:192,column:8},end:{line:192,column:98}},"16":{start:{line:203,column:8},end:{line:203,column:86}},"17":{start:{line:213,column:8},end:{line:213,column:78}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:39,column:4},end:{line:39,column:5}},loc:{start:{line:39,column:138},end:{line:41,column:5}},line:39},"1":{name:"(anonymous_1)",decl:{start:{line:49,column:4},end:{line:49,column:5}},loc:{start:{line:49,column:62},end:{line:51,column:5}},line:49},"2":{name:"(anonymous_2)",decl:{start:{line:61,column:4},end:{line:61,column:5}},loc:{start:{line:61,column:78},end:{line:63,column:5}},line:61},"3":{name:"(anonymous_3)",decl:{start:{line:71,column:4},end:{line:71,column:5}},loc:{start:{line:71,column:68},end:{line:73,column:5}},line:71},"4":{name:"(anonymous_4)",decl:{start:{line:82,column:4},end:{line:82,column:5}},loc:{start:{line:82,column:73},end:{line:84,column:5}},line:82},"5":{name:"(anonymous_5)",decl:{start:{line:93,column:4},end:{line:93,column:5}},loc:{start:{line:93,column:73},end:{line:95,column:5}},line:93},"6":{name:"(anonymous_6)",decl:{start:{line:104,column:4},end:{line:104,column:5}},loc:{start:{line:104,column:75},end:{line:106,column:5}},line:104},"7":{name:"(anonymous_7)",decl:{start:{line:115,column:4},end:{line:115,column:5}},loc:{start:{line:115,column:73},end:{line:117,column:5}},line:115},"8":{name:"(anonymous_8)",decl:{start:{line:126,column:4},end:{line:126,column:5}},loc:{start:{line:126,column:75},end:{line:128,column:5}},line:126},"9":{name:"(anonymous_9)",decl:{start:{line:137,column:4},end:{line:137,column:5}},loc:{start:{line:137,column:85},end:{line:139,column:5}},line:137},"10":{name:"(anonymous_10)",decl:{start:{line:148,column:4},end:{line:148,column:5}},loc:{start:{line:148,column:73},end:{line:150,column:5}},line:148},"11":{name:"(anonymous_11)",decl:{start:{line:158,column:4},end:{line:158,column:5}},loc:{start:{line:158,column:75},end:{line:160,column:5}},line:158},"12":{name:"(anonymous_12)",decl:{start:{line:169,column:4},end:{line:169,column:5}},loc:{start:{line:169,column:89},end:{line:171,column:5}},line:169},"13":{name:"(anonymous_13)",decl:{start:{line:180,column:4},end:{line:180,column:5}},loc:{start:{line:180,column:92},end:{line:182,column:5}},line:180},"14":{name:"(anonymous_14)",decl:{start:{line:191,column:4},end:{line:191,column:5}},loc:{start:{line:191,column:80},end:{line:193,column:5}},line:191},"15":{name:"(anonymous_15)",decl:{start:{line:202,column:4},end:{line:202,column:5}},loc:{start:{line:202,column:73},end:{line:204,column:5}},line:202},"16":{name:"(anonymous_16)",decl:{start:{line:212,column:4},end:{line:212,column:5}},loc:{start:{line:212,column:65},end:{line:214,column:5}},line:212}},branchMap:{"0":{loc:{start:{line:39,column:96},end:{line:39,column:112}},type:"default-arg",locations:[{start:{line:39,column:108},end:{line:39,column:112}}],line:39},"1":{loc:{start:{line:39,column:114},end:{line:39,column:136}},type:"default-arg",locations:[{start:{line:39,column:127},end:{line:39,column:136}}],line:39}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0},b:{"0":[0],"1":[0]},inputSourceMap:{version:3,file:"validation.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/validation/validation.ts"],names:[],mappings:"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",sourcesContent:["import { LanguageModel } from '../models/languagemodel';\r\nimport { emailValidator } from './email.validator';\r\nimport { equalsValueValidator } from './equals.validator';\r\nimport { isValidDateValidator } from './invaliddate.validator';\r\nimport { maxDateValidator } from './maxdate.validator';\r\nimport { maxTimeValidator } from './maxtime.validator';\r\nimport { maxValueValidator } from './maxvalue.validator';\r\nimport { minDateValidator } from './mindate.validator';\r\nimport { minFilesValidator } from './minfiles.validator';\r\nimport { minTextLengthValidator } from './mintextlength.validator';\r\nimport { minTimeValidator } from './mintime.validator';\r\nimport { minValueValidator } from './minvalue.validator';\r\nimport { multilanguageRequiredValidator } from './multilanguagerequired.validator';\r\nimport { multilanguageRequiredAnyValidator } from './multilanguagerequiredany.validator';\r\nimport { notEqualsValueValidator } from './notequals.validator';\r\nimport { patternValidator } from './pattern.validator';\r\nimport { requiredValidator } from './required.validator';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { ValidatorFn } from '@angular/forms';\r\nimport * as moment_ from 'moment';\r\n\r\n// #region Variables\r\n\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n// #endregion Variables\r\n\r\n// #region Exported Classes\r\n\r\n/**\r\n * Klasse mit Standard Validatoren\r\n */\r\nexport class Validation {\r\n // #region Public Static Methods\r\n\r\n /**\r\n * Die Methode ist von jedem Validator aufgerufen. Die setzt sowohl den errorType des gerp\xFCfte Item, als auch die ErrorMessage (gem\xE4ss von errorType, FieldName und Parameters).\r\n * @param errorType Typ den Fehler\r\n * @param errorMessageKey Error Message Key\r\n * @param errorMessageValidationSummaryKey Error Message Key f\xFCr Validation Summary\r\n * @param fieldName Label oder Name des Feldes\r\n * @param parameters Parametern die in den Meldungen als Platzhalter verwendet werden k\xF6nnen\r\n */\r\n public static GetValidationErrorItem(\r\n errorType: string,\r\n errorMessageKey: string,\r\n errorMessageValidationSummaryKey: string,\r\n fieldName: string = null,\r\n parameters: Map<string, any> = new Map<string, any>()\r\n ): any {\r\n return CreateValidationError(errorType, errorMessageKey, errorMessageValidationSummaryKey, parameters);\r\n }\r\n\r\n /**\r\n * Validiert Feld auf E-Mail Adresse\r\n * @param control Control das Valdiert werden soll\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static email(validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return emailValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator validate if value is the requiredValue\r\n * @param requiredValue Value that control should have\r\n * @param control Control to be validate\r\n * @param fieldName Label of control\r\n * @param validationMessage validation message near the control\r\n * @param validationMessageSummary validation inside the validation summary\r\n\r\n */\r\n public static equals(requiredValue: any, validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return equalsValueValidator(requiredValue, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator der pr\xFCft ob der Wert ein Datum ist.\r\n * @param control Control mit IDateTimeControl Interface implementierung\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die beim Control angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static isValidDate(validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return isValidDateValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validiert ob das Datum \xE4lter als maxDate ist\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param maxDate max. Datum\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static maxDate(maxDate: Date, validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return maxDateValidator(maxDate, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validiert ob die Zeit fr\xFCher als maxTime ist.\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param maxTime Min. Zeit\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static maxTime(maxTime: Date, validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return maxTimeValidator(maxTime, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator f\xFCr Max Value\r\n * @param control Control das Validiert werden soll\r\n * @param maxvalue Max. Wert\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static maxValue(maxvalue: number, validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return maxValueValidator(maxvalue, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validiert ob das Datum neuer als minDate ist\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param minDate Min. Datum\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static minDate(minDate: Date, validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return minDateValidator(minDate, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator f\xFCr min. Anzahl von Uploads\r\n * @param control Control das Validatiert werden soll. Control muss IUploadControl implementiert haben\r\n * @param minFiles Min. Anzahl Files die hochgeladen werden m\xFCssen\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static minFiles(minFiles: number, validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return minFilesValidator(minFiles, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validiert auf die L\xE4nge des Wertes im Control\r\n * @param control Control das Validiert werden soll\r\n * @param mintextlength Min. L\xE4nge des Wertes\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static minTextLength(mintextlength: number, validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return minTextLengthValidator(mintextlength, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validiert ob die Zeit sp\xE4ter als minTime ist.\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param minTime Min. Zeit\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static minTime(minTime: Date, validationMessage: string, validationMessageSummary: string): ValidatorFn {\r\n return minTimeValidator(minTime, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator der pr\xFCft ob der Wert ein Datum ist.\r\n * @param control Control mit IDateTimeControl Interface implementierung\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static minValue(minvalue: number, validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return minValueValidator(minvalue, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validierung mit einem RegEx Pattern\r\n * @param control Control das validiert werden soll.\r\n * @param pattern RegEx Pattern\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static multilanguageRequired(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return multilanguageRequiredValidator(languages, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator f\xFCr MultiLanguage Control, welcher \xFCberpr\xFCft ob min. ein Wert erfasst wurde\r\n * @param control Control das Validatiert werden soll\r\n * @param languages Sprachen die im Control erfasst werden k\xF6nnen.\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static multilanguageRequiredAny(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return multilanguageRequiredAnyValidator(languages, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator validate if value is not the invalidValue\r\n * @param invalidValue Value that control doesn't should have\r\n * @param control Control to be validate\r\n * @param fieldName Label of control\r\n * @param validationMessage validation message near the control\r\n * @param validationMessageSummary validation inside the validation summary\r\n */\r\n public static notequals(invalidValue: any, validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return notEqualsValueValidator(invalidValue, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validierung mit einem RegEx Pattern\r\n * @param control Control das validiert werden soll.\r\n * @param pattern RegEx Pattern\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static pattern(pattern: string, validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return patternValidator(pattern, validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator f\xFCr Required State\r\n * @param control Control das Validiert wird\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n public static required(validationMessage: string, validationMessageSummary): ValidatorFn {\r\n return requiredValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n // #endregion Public Static Methods\r\n}\r\n\r\n// #endregion Exported Classes\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"4de13542acdc33aea65f44dc41719c20dbf197fd"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
|
|
2
|
+
cov_2htktrox8d=function(){return actualCoverage;};}return actualCoverage;}cov_2htktrox8d();import{emailValidator}from'./email.validator';import{equalsValueValidator}from'./equals.validator';import{isValidDateValidator}from'./invaliddate.validator';import{maxDateValidator}from'./maxdate.validator';import{maxTimeValidator}from'./maxtime.validator';import{maxValueValidator}from'./maxvalue.validator';import{minDateValidator}from'./mindate.validator';import{minFilesValidator}from'./minfiles.validator';import{minTextLengthValidator}from'./mintextlength.validator';import{minTimeValidator}from'./mintime.validator';import{minValueValidator}from'./minvalue.validator';import{multilanguageRequiredValidator}from'./multilanguagerequired.validator';import{multilanguageRequiredAnyValidator}from'./multilanguagerequiredany.validator';import{notEqualsValueValidator}from'./notequals.validator';import{patternValidator}from'./pattern.validator';import{requiredValidator}from'./required.validator';import{CreateValidationError}from'./validationerrorcreator';import*as moment_ from'moment';// #region Variables
|
|
3
|
+
/**
|
|
4
|
+
* Moment
|
|
5
|
+
*/const moment=(cov_2htktrox8d().s[0]++,moment_['default']);// #endregion Variables
|
|
6
|
+
// #region Exported Classes
|
|
7
|
+
/**
|
|
3
8
|
* Klasse mit Standard Validatoren
|
|
4
|
-
*/export class Validation{
|
|
9
|
+
*/export class Validation{// #region Public Static Methods
|
|
10
|
+
/**
|
|
5
11
|
* Die Methode ist von jedem Validator aufgerufen. Die setzt sowohl den errorType des gerpüfte Item, als auch die ErrorMessage (gemäss von errorType, FieldName und Parameters).
|
|
6
12
|
* @param errorType Typ den Fehler
|
|
7
13
|
* @param errorMessageKey Error Message Key
|
|
8
14
|
* @param errorMessageValidationSummaryKey Error Message Key für Validation Summary
|
|
9
15
|
* @param fieldName Label oder Name des Feldes
|
|
10
16
|
* @param parameters Parametern die in den Meldungen als Platzhalter verwendet werden können
|
|
11
|
-
*/static GetValidationErrorItem(errorType,errorMessageKey,errorMessageValidationSummaryKey,fieldName=(cov_2htktrox8d().b[0][0]++,null),parameters=(cov_2htktrox8d().b[1][0]++,new Map())){cov_2htktrox8d().f[0]++;cov_2htktrox8d().s[
|
|
12
|
-
*
|
|
13
|
-
* @param control Control das
|
|
17
|
+
*/static GetValidationErrorItem(errorType,errorMessageKey,errorMessageValidationSummaryKey,fieldName=(cov_2htktrox8d().b[0][0]++,null),parameters=(cov_2htktrox8d().b[1][0]++,new Map())){cov_2htktrox8d().f[0]++;cov_2htktrox8d().s[1]++;return CreateValidationError(errorType,errorMessageKey,errorMessageValidationSummaryKey,parameters);}/**
|
|
18
|
+
* Validiert Feld auf E-Mail Adresse
|
|
19
|
+
* @param control Control das Valdiert werden soll
|
|
14
20
|
* @param fieldName Label des Controls
|
|
15
21
|
* @param validationMessage Validierungsmeldung die
|
|
16
22
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
17
|
-
*/static
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
*/static email(validationMessage,validationMessageSummary){cov_2htktrox8d().f[1]++;cov_2htktrox8d().s[2]++;return emailValidator(validationMessage,validationMessageSummary);}/**
|
|
24
|
+
* Validator validate if value is the requiredValue
|
|
25
|
+
* @param requiredValue Value that control should have
|
|
26
|
+
* @param control Control to be validate
|
|
27
|
+
* @param fieldName Label of control
|
|
28
|
+
* @param validationMessage validation message near the control
|
|
29
|
+
* @param validationMessageSummary validation inside the validation summary
|
|
30
|
+
|
|
31
|
+
*/static equals(requiredValue,validationMessage,validationMessageSummary){cov_2htktrox8d().f[2]++;cov_2htktrox8d().s[3]++;return equalsValueValidator(requiredValue,validationMessage,validationMessageSummary);}/**
|
|
26
32
|
* Validator der prüft ob der Wert ein Datum ist.
|
|
27
33
|
* @param control Control mit IDateTimeControl Interface implementierung
|
|
28
34
|
* @param fieldName Label des Controls
|
|
29
|
-
* @param validationMessage Validierungsmeldung die
|
|
30
|
-
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
31
|
-
*/static minValue(minvalue,validationMessage,validationMessageSummary){cov_2htktrox8d().f[3]++;cov_2htktrox8d().s[3]++;return minValueValidator(minvalue,validationMessage,validationMessageSummary);}/**
|
|
32
|
-
* Validierung mit einem RegEx Pattern
|
|
33
|
-
* @param control Control das validiert werden soll.
|
|
34
|
-
* @param pattern RegEx Pattern
|
|
35
|
-
* @param fieldName Label des Controls
|
|
36
|
-
* @param validationMessage Validierungsmeldung die
|
|
35
|
+
* @param validationMessage Validierungsmeldung die beim Control angezeigt wird
|
|
37
36
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
38
|
-
*/static
|
|
39
|
-
*
|
|
40
|
-
* @param control Control das Validiert werden soll
|
|
41
|
-
* @param
|
|
37
|
+
*/static isValidDate(validationMessage,validationMessageSummary){cov_2htktrox8d().f[3]++;cov_2htktrox8d().s[4]++;return isValidDateValidator(validationMessage,validationMessageSummary);}/**
|
|
38
|
+
* Validiert ob das Datum älter als maxDate ist
|
|
39
|
+
* @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben
|
|
40
|
+
* @param maxDate max. Datum
|
|
42
41
|
* @param fieldName Label des Controls
|
|
43
42
|
* @param validationMessage Validierungsmeldung die
|
|
44
43
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
45
|
-
*/static
|
|
46
|
-
* Validiert
|
|
47
|
-
* @param control Control das
|
|
44
|
+
*/static maxDate(maxDate,validationMessage,validationMessageSummary){cov_2htktrox8d().f[4]++;cov_2htktrox8d().s[5]++;return maxDateValidator(maxDate,validationMessage,validationMessageSummary);}/**
|
|
45
|
+
* Validiert ob die Zeit früher als maxTime ist.
|
|
46
|
+
* @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben
|
|
47
|
+
* @param maxTime Min. Zeit
|
|
48
48
|
* @param fieldName Label des Controls
|
|
49
49
|
* @param validationMessage Validierungsmeldung die
|
|
50
50
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
51
|
-
*/static
|
|
52
|
-
*
|
|
51
|
+
*/static maxTime(maxTime,validationMessage,validationMessageSummary){cov_2htktrox8d().f[5]++;cov_2htktrox8d().s[6]++;return maxTimeValidator(maxTime,validationMessage,validationMessageSummary);}/**
|
|
52
|
+
* Validator für Max Value
|
|
53
53
|
* @param control Control das Validiert werden soll
|
|
54
|
-
* @param
|
|
54
|
+
* @param maxvalue Max. Wert
|
|
55
55
|
* @param fieldName Label des Controls
|
|
56
56
|
* @param validationMessage Validierungsmeldung die
|
|
57
57
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
58
|
-
*/static
|
|
58
|
+
*/static maxValue(maxvalue,validationMessage,validationMessageSummary){cov_2htktrox8d().f[6]++;cov_2htktrox8d().s[7]++;return maxValueValidator(maxvalue,validationMessage,validationMessageSummary);}/**
|
|
59
59
|
* Validiert ob das Datum neuer als minDate ist
|
|
60
60
|
* @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben
|
|
61
61
|
* @param minDate Min. Datum
|
|
62
62
|
* @param fieldName Label des Controls
|
|
63
63
|
* @param validationMessage Validierungsmeldung die
|
|
64
64
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
65
|
-
*/static minDate(minDate,validationMessage,validationMessageSummary){cov_2htktrox8d().f[
|
|
66
|
-
*
|
|
67
|
-
* @param control Control das
|
|
68
|
-
* @param
|
|
65
|
+
*/static minDate(minDate,validationMessage,validationMessageSummary){cov_2htktrox8d().f[7]++;cov_2htktrox8d().s[8]++;return minDateValidator(minDate,validationMessage,validationMessageSummary);}/**
|
|
66
|
+
* Validator für min. Anzahl von Uploads
|
|
67
|
+
* @param control Control das Validatiert werden soll. Control muss IUploadControl implementiert haben
|
|
68
|
+
* @param minFiles Min. Anzahl Files die hochgeladen werden müssen
|
|
69
|
+
* @param fieldName Label des Controls
|
|
70
|
+
* @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird
|
|
71
|
+
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
72
|
+
*/static minFiles(minFiles,validationMessage,validationMessageSummary){cov_2htktrox8d().f[8]++;cov_2htktrox8d().s[9]++;return minFilesValidator(minFiles,validationMessage,validationMessageSummary);}/**
|
|
73
|
+
* Validiert auf die Länge des Wertes im Control
|
|
74
|
+
* @param control Control das Validiert werden soll
|
|
75
|
+
* @param mintextlength Min. Länge des Wertes
|
|
69
76
|
* @param fieldName Label des Controls
|
|
70
77
|
* @param validationMessage Validierungsmeldung die
|
|
71
78
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
72
|
-
*/static
|
|
79
|
+
*/static minTextLength(mintextlength,validationMessage,validationMessageSummary){cov_2htktrox8d().f[9]++;cov_2htktrox8d().s[10]++;return minTextLengthValidator(mintextlength,validationMessage,validationMessageSummary);}/**
|
|
73
80
|
* Validiert ob die Zeit später als minTime ist.
|
|
74
81
|
* @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben
|
|
75
82
|
* @param minTime Min. Zeit
|
|
76
83
|
* @param fieldName Label des Controls
|
|
77
84
|
* @param validationMessage Validierungsmeldung die
|
|
78
85
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
79
|
-
*/static minTime(minTime,validationMessage,validationMessageSummary){cov_2htktrox8d().f[10]++;cov_2htktrox8d().s[
|
|
80
|
-
*
|
|
81
|
-
* @param control Control
|
|
82
|
-
* @param maxTime Min. Zeit
|
|
86
|
+
*/static minTime(minTime,validationMessage,validationMessageSummary){cov_2htktrox8d().f[10]++;cov_2htktrox8d().s[11]++;return minTimeValidator(minTime,validationMessage,validationMessageSummary);}/**
|
|
87
|
+
* Validator der prüft ob der Wert ein Datum ist.
|
|
88
|
+
* @param control Control mit IDateTimeControl Interface implementierung
|
|
83
89
|
* @param fieldName Label des Controls
|
|
84
90
|
* @param validationMessage Validierungsmeldung die
|
|
85
91
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
86
|
-
*/static
|
|
87
|
-
*
|
|
88
|
-
* @param control Control
|
|
92
|
+
*/static minValue(minvalue,validationMessage,validationMessageSummary){cov_2htktrox8d().f[11]++;cov_2htktrox8d().s[12]++;return minValueValidator(minvalue,validationMessage,validationMessageSummary);}/**
|
|
93
|
+
* Validierung mit einem RegEx Pattern
|
|
94
|
+
* @param control Control das validiert werden soll.
|
|
95
|
+
* @param pattern RegEx Pattern
|
|
89
96
|
* @param fieldName Label des Controls
|
|
90
|
-
* @param validationMessage Validierungsmeldung die
|
|
97
|
+
* @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird
|
|
91
98
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
92
|
-
*/static
|
|
93
|
-
* Validator für min.
|
|
94
|
-
* @param control Control das Validatiert werden soll
|
|
95
|
-
* @param
|
|
99
|
+
*/static multilanguageRequired(languages,validationMessage,validationMessageSummary){cov_2htktrox8d().f[12]++;cov_2htktrox8d().s[13]++;return multilanguageRequiredValidator(languages,validationMessage,validationMessageSummary);}/**
|
|
100
|
+
* Validator für MultiLanguage Control, welcher überprüft ob min. ein Wert erfasst wurde
|
|
101
|
+
* @param control Control das Validatiert werden soll
|
|
102
|
+
* @param languages Sprachen die im Control erfasst werden können.
|
|
96
103
|
* @param fieldName Label des Controls
|
|
97
104
|
* @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird
|
|
98
105
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
99
|
-
*/static
|
|
106
|
+
*/static multilanguageRequiredAny(languages,validationMessage,validationMessageSummary){cov_2htktrox8d().f[13]++;cov_2htktrox8d().s[14]++;return multilanguageRequiredAnyValidator(languages,validationMessage,validationMessageSummary);}/**
|
|
100
107
|
* Validator validate if value is not the invalidValue
|
|
101
108
|
* @param invalidValue Value that control doesn't should have
|
|
102
109
|
* @param control Control to be validate
|
|
103
110
|
* @param fieldName Label of control
|
|
104
111
|
* @param validationMessage validation message near the control
|
|
105
112
|
* @param validationMessageSummary validation inside the validation summary
|
|
106
|
-
*/static notequals(invalidValue,validationMessage,validationMessageSummary){cov_2htktrox8d().f[14]++;cov_2htktrox8d().s[
|
|
113
|
+
*/static notequals(invalidValue,validationMessage,validationMessageSummary){cov_2htktrox8d().f[14]++;cov_2htktrox8d().s[15]++;return notEqualsValueValidator(invalidValue,validationMessage,validationMessageSummary);}/**
|
|
107
114
|
* Validierung mit einem RegEx Pattern
|
|
108
115
|
* @param control Control das validiert werden soll.
|
|
109
116
|
* @param pattern RegEx Pattern
|
|
110
117
|
* @param fieldName Label des Controls
|
|
111
|
-
* @param validationMessage Validierungsmeldung die
|
|
118
|
+
* @param validationMessage Validierungsmeldung die
|
|
112
119
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
113
|
-
*/static
|
|
114
|
-
* Validator für
|
|
115
|
-
* @param control Control das
|
|
116
|
-
* @param languages Sprachen die im Control erfasst werden können.
|
|
120
|
+
*/static pattern(pattern,validationMessage,validationMessageSummary){cov_2htktrox8d().f[15]++;cov_2htktrox8d().s[16]++;return patternValidator(pattern,validationMessage,validationMessageSummary);}/**
|
|
121
|
+
* Validator für Required State
|
|
122
|
+
* @param control Control das Validiert wird
|
|
117
123
|
* @param fieldName Label des Controls
|
|
118
|
-
* @param validationMessage Validierungsmeldung die
|
|
124
|
+
* @param validationMessage Validierungsmeldung die
|
|
119
125
|
* @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird
|
|
120
|
-
*/static
|
|
121
|
-
* Moment
|
|
122
|
-
*/const moment=(cov_2htktrox8d().s[17]++,moment_['default']);//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUlsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENB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dCB7IFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2xhbmd1YWdlbW9kZWwnO1xyXG5pbXBvcnQgeyBlbWFpbFZhbGlkYXRvciB9IGZyb20gJy4vZW1haWwudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgZXF1YWxzVmFsdWVWYWxpZGF0b3IgfSBmcm9tICcuL2VxdWFscy52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBpc1ZhbGlkRGF0ZVZhbGlkYXRvciB9IGZyb20gJy4vaW52YWxpZGRhdGUudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbWF4RGF0ZVZhbGlkYXRvciB9IGZyb20gJy4vbWF4ZGF0ZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtYXhUaW1lVmFsaWRhdG9yIH0gZnJvbSAnLi9tYXh0aW1lLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1heFZhbHVlVmFsaWRhdG9yIH0gZnJvbSAnLi9tYXh2YWx1ZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtaW5EYXRlVmFsaWRhdG9yIH0gZnJvbSAnLi9taW5kYXRlLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1pbkZpbGVzVmFsaWRhdG9yIH0gZnJvbSAnLi9taW5maWxlcy52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtaW5MZW5ndGhWYWxpZGF0b3IgfSBmcm9tICcuL21pbmxlbmd0aC52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtaW5UaW1lVmFsaWRhdG9yIH0gZnJvbSAnLi9taW50aW1lLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1pblZhbHVlVmFsaWRhdG9yIH0gZnJvbSAnLi9taW52YWx1ZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtdWx0aWxhbmd1YWdlUmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tICcuL211bHRpbGFuZ3VhZ2VyZXF1aXJlZC52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtdWx0aWxhbmd1YWdlUmVxdWlyZWRBbnlWYWxpZGF0b3IgfSBmcm9tICcuL211bHRpbGFuZ3VhZ2VyZXF1aXJlZGFueS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBub3RFcXVhbHNWYWx1ZVZhbGlkYXRvciB9IGZyb20gJy4vbm90ZXF1YWxzLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHBhdHRlcm5WYWxpZGF0b3IgfSBmcm9tICcuL3BhdHRlcm4udmFsaWRhdG9yJztcclxuaW1wb3J0IHsgcmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tICcuL3JlcXVpcmVkLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IENyZWF0ZVZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4vdmFsaWRhdGlvbmVycm9yY3JlYXRvcic7XHJcblxyXG4vKipcclxuICogS2xhc3NlIG1pdCBTdGFuZGFyZCBWYWxpZGF0b3JlblxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb24ge1xyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIGlzdCB2b24gamVkZW0gVmFsaWRhdG9yIGF1ZmdlcnVmZW4uIERpZSBzZXR6dCBzb3dvaGwgZGVuIGVycm9yVHlwZSBkZXMgZ2VycMO8ZnRlIEl0ZW0sIGFscyBhdWNoIGRpZSBFcnJvck1lc3NhZ2UgKGdlbcOkc3Mgdm9uIGVycm9yVHlwZSwgRmllbGROYW1lIHVuZCBQYXJhbWV0ZXJzKS5cclxuICAgKiBAcGFyYW0gZXJyb3JUeXBlIFR5cCBkZW4gRmVobGVyXHJcbiAgICogQHBhcmFtIGVycm9yTWVzc2FnZUtleSBFcnJvciBNZXNzYWdlIEtleVxyXG4gICAqIEBwYXJhbSBlcnJvck1lc3NhZ2VWYWxpZGF0aW9uU3VtbWFyeUtleSBFcnJvciBNZXNzYWdlIEtleSBmw7xyIFZhbGlkYXRpb24gU3VtbWFyeVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgIExhYmVsIG9kZXIgTmFtZSBkZXMgRmVsZGVzXHJcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgUGFyYW1ldGVybiBkaWUgaW4gZGVuIE1lbGR1bmdlbiBhbHMgUGxhdHpoYWx0ZXIgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuXHJcbiAgICovXHJcbiAgc3RhdGljIEdldFZhbGlkYXRpb25FcnJvckl0ZW0oXHJcbiAgICBlcnJvclR5cGU6IHN0cmluZyxcclxuICAgIGVycm9yTWVzc2FnZUtleTogc3RyaW5nLFxyXG4gICAgZXJyb3JNZXNzYWdlVmFsaWRhdGlvblN1bW1hcnlLZXk6IHN0cmluZyxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nID0gbnVsbCxcclxuICAgIHBhcmFtZXRlcnM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PigpXHJcbiAgKTogYW55IHtcclxuICAgIHJldHVybiBDcmVhdGVWYWxpZGF0aW9uRXJyb3IoXHJcbiAgICAgIGVycm9yVHlwZSxcclxuICAgICAgZXJyb3JNZXNzYWdlS2V5LFxyXG4gICAgICBlcnJvck1lc3NhZ2VWYWxpZGF0aW9uU3VtbWFyeUtleSxcclxuICAgICAgcGFyYW1ldGVyc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciBmw7xyIFJlcXVpcmVkIFN0YXRlXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRpZXJ0IHdpcmRcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIHJlcXVpcmVkKFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiByZXF1aXJlZFZhbGlkYXRvcih2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciB2YWxpZGF0ZSBpZiB2YWx1ZSBpcyB0aGUgcmVxdWlyZWRWYWx1ZVxyXG4gICAqIEBwYXJhbSByZXF1aXJlZFZhbHVlIFZhbHVlIHRoYXQgY29udHJvbCBzaG91bGQgaGF2ZVxyXG4gICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgdG8gYmUgdmFsaWRhdGVcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgdmFsaWRhdGlvbiBtZXNzYWdlIG5lYXIgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IHZhbGlkYXRpb24gaW5zaWRlIHRoZSB2YWxpZGF0aW9uIHN1bW1hcnlcclxuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBlcXVhbHMoXHJcbiAgICByZXF1aXJlZFZhbHVlOiBhbnksXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIGVxdWFsc1ZhbHVlVmFsaWRhdG9yKFxyXG4gICAgICByZXF1aXJlZFZhbHVlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdG9yIGRlciBwcsO8ZnQgb2IgZGVyIFdlcnQgZWluIERhdHVtIGlzdC5cclxuICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIG1pdCBJRGF0ZVRpbWVDb250cm9sIEludGVyZmFjZSBpbXBsZW1lbnRpZXJ1bmdcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1pblZhbHVlKFxyXG4gICAgbWludmFsdWU6IG51bWJlcixcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gbWluVmFsdWVWYWxpZGF0b3IoXHJcbiAgICAgIG1pbnZhbHVlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRpZXJ1bmcgbWl0IGVpbmVtIFJlZ0V4IFBhdHRlcm5cclxuICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGRhcyB2YWxpZGllcnQgd2VyZGVuIHNvbGwuXHJcbiAgICogQHBhcmFtIHBhdHRlcm4gUmVnRXggUGF0dGVyblxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSBpbSBWYWxpZGF0aW9uIFN1bW1hcnkgYW5nZXplaWd0IHdpcmRcclxuICAgKi9cclxuICBzdGF0aWMgcGF0dGVybihcclxuICAgIHBhdHRlcm46IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gcGF0dGVyblZhbGlkYXRvcihcclxuICAgICAgcGF0dGVybixcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciBmw7xyIE1heCBWYWx1ZVxyXG4gICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkaWVydCB3ZXJkZW4gc29sbFxyXG4gICAqIEBwYXJhbSBtYXh2YWx1ZSBNYXguIFdlcnRcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1heFZhbHVlKFxyXG4gICAgbWF4dmFsdWU6IG51bWJlcixcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gbWF4VmFsdWVWYWxpZGF0b3IoXHJcbiAgICAgIG1heHZhbHVlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRpZXJ0IEZlbGQgYXVmIEUtTWFpbCBBZHJlc3NlXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsZGllcnQgd2VyZGVuIHNvbGxcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIGVtYWlsKFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBlbWFpbFZhbGlkYXRvcih2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkaWVydCBhdWYgZGllIEzDpG5nZSBkZXMgV2VydGVzIGltIENvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGRhcyBWYWxpZGllcnQgd2VyZGVuIHNvbGxcclxuICAgKiBAcGFyYW0gbWlubGVuZ3RoIE1pbi4gTMOkbmdlIGRlcyBXZXJ0ZXNcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1pbkxlbmd0aChcclxuICAgIG1pbmxlbmd0aDogbnVtYmVyLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBtaW5MZW5ndGhWYWxpZGF0b3IoXHJcbiAgICAgIG1pbmxlbmd0aCxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkaWVydCBvYiBkYXMgRGF0dW0gbmV1ZXIgYWxzIG1pbkRhdGUgaXN0XHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRpZXJ0IHdlcmRlbiBzb2xsLiBNdXNzIElEYXRlVGltZUNvbnRyb2wgaW1wbGVtZW50aWVydCBoYWJlblxyXG4gICAqIEBwYXJhbSBtaW5EYXRlIE1pbi4gRGF0dW1cclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1pbkRhdGUoXHJcbiAgICBtaW5EYXRlOiBEYXRlLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBtaW5EYXRlVmFsaWRhdG9yKFxyXG4gICAgICBtaW5EYXRlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRpZXJ0IG9iIGRhcyBEYXR1bSDDpGx0ZXIgYWxzIG1heERhdGUgaXN0XHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRpZXJ0IHdlcmRlbiBzb2xsLiBNdXNzIElEYXRlVGltZUNvbnRyb2wgaW1wbGVtZW50aWVydCBoYWJlblxyXG4gICAqIEBwYXJhbSBtYXhEYXRlIG1heC4gRGF0dW1cclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1heERhdGUoXHJcbiAgICBtYXhEYXRlOiBEYXRlLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBtYXhEYXRlVmFsaWRhdG9yKFxyXG4gICAgICBtYXhEYXRlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRpZXJ0IG9iIGRpZSBaZWl0IHNww6R0ZXIgYWxzIG1pblRpbWUgaXN0LlxyXG4gICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkaWVydCB3ZXJkZW4gc29sbC4gTXVzcyBJRGF0ZVRpbWVDb250cm9sIGltcGxlbWVudGllcnQgaGFiZW5cclxuICAgKiBAcGFyYW0gbWluVGltZSBNaW4uIFplaXRcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1pblRpbWUoXHJcbiAgICBtaW5UaW1lOiBEYXRlLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeTogc3RyaW5nXHJcbiAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIG1pblRpbWVWYWxpZGF0b3IoXHJcbiAgICAgIG1pblRpbWUsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGllcnQgb2IgZGllIFplaXQgZnLDvGhlciBhbHMgbWF4VGltZSBpc3QuXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRpZXJ0IHdlcmRlbiBzb2xsLiBNdXNzIElEYXRlVGltZUNvbnRyb2wgaW1wbGVtZW50aWVydCBoYWJlblxyXG4gICAqIEBwYXJhbSBtYXhUaW1lIE1pbi4gWmVpdFxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSBpbSBWYWxpZGF0aW9uIFN1bW1hcnkgYW5nZXplaWd0IHdpcmRcclxuICAgKi9cclxuICBzdGF0aWMgbWF4VGltZShcclxuICAgIG1heFRpbWU6IERhdGUsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIG1heFRpbWVWYWxpZGF0b3IoXHJcbiAgICAgIG1heFRpbWUsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0b3IgZGVyIHByw7xmdCBvYiBkZXIgV2VydCBlaW4gRGF0dW0gaXN0LlxyXG4gICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgbWl0IElEYXRlVGltZUNvbnRyb2wgSW50ZXJmYWNlIGltcGxlbWVudGllcnVuZ1xyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGJlaW0gQ29udHJvbCBhbmdlemVpZ3Qgd2lyZFxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIGlzVmFsaWREYXRlKFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBpc1ZhbGlkRGF0ZVZhbGlkYXRvcih2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciBmw7xyIG1pbi4gQW56YWhsIHZvbiBVcGxvYWRzXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRhdGllcnQgd2VyZGVuIHNvbGwuIENvbnRyb2wgbXVzcyBJVXBsb2FkQ29udHJvbCBpbXBsZW1lbnRpZXJ0IGhhYmVuXHJcbiAgICogQHBhcmFtIG1pbkZpbGVzIE1pbi4gQW56YWhsIEZpbGVzIGRpZSBob2NoZ2VsYWRlbiB3ZXJkZW4gbcO8c3NlblxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllIHVudGVyaGFsYiBkZXMgQ29udHJvbHMgYW5nZXplaWd0IHdpcmRcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAqL1xyXG4gIHN0YXRpYyBtaW5GaWxlcyhcclxuICAgIG1pbkZpbGVzOiBudW1iZXIsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIG1pbkZpbGVzVmFsaWRhdG9yKFxyXG4gICAgICBtaW5GaWxlcyxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciB2YWxpZGF0ZSBpZiB2YWx1ZSBpcyBub3QgdGhlIGludmFsaWRWYWx1ZVxyXG4gICAqIEBwYXJhbSBpbnZhbGlkVmFsdWUgVmFsdWUgdGhhdCBjb250cm9sIGRvZXNuJ3Qgc2hvdWxkIGhhdmVcclxuICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIHRvIGJlIHZhbGlkYXRlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBMYWJlbCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIHZhbGlkYXRpb24gbWVzc2FnZSBuZWFyIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSB2YWxpZGF0aW9uIGluc2lkZSB0aGUgdmFsaWRhdGlvbiBzdW1tYXJ5XHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBub3RlcXVhbHMoXHJcbiAgICBpbnZhbGlkVmFsdWU6IGFueSxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gbm90RXF1YWxzVmFsdWVWYWxpZGF0b3IoXHJcbiAgICAgIGludmFsaWRWYWx1ZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkaWVydW5nIG1pdCBlaW5lbSBSZWdFeCBQYXR0ZXJuXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgdmFsaWRpZXJ0IHdlcmRlbiBzb2xsLlxyXG4gICAqIEBwYXJhbSBwYXR0ZXJuIFJlZ0V4IFBhdHRlcm5cclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSB1bnRlcmhhbGIgZGVzIENvbnRyb2xzIGFuZ2V6ZWlndCB3aXJkXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSBpbSBWYWxpZGF0aW9uIFN1bW1hcnkgYW5nZXplaWd0IHdpcmRcclxuICAgKi9cclxuICBzdGF0aWMgbXVsdGlsYW5ndWFnZVJlcXVpcmVkKFxyXG4gICAgbGFuZ3VhZ2VzOiBMYW5ndWFnZU1vZGVsW10sXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIG11bHRpbGFuZ3VhZ2VSZXF1aXJlZFZhbGlkYXRvcihcclxuICAgICAgbGFuZ3VhZ2VzLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdG9yIGbDvHIgTXVsdGlMYW5ndWFnZSBDb250cm9sLCB3ZWxjaGVyIMO8YmVycHLDvGZ0IG9iIG1pbi4gZWluIFdlcnQgZXJmYXNzdCB3dXJkZVxyXG4gICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkYXRpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICogQHBhcmFtIGxhbmd1YWdlcyBTcHJhY2hlbiBkaWUgaW0gQ29udHJvbCBlcmZhc3N0IHdlcmRlbiBrw7ZubmVuLlxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllIHVudGVyaGFsYiBkZXMgQ29udHJvbHMgYW5nZXplaWd0IHdpcmRcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAqL1xyXG4gIHN0YXRpYyBtdWx0aWxhbmd1YWdlUmVxdWlyZWRBbnkoXHJcbiAgICBsYW5ndWFnZXM6IExhbmd1YWdlTW9kZWxbXSxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gbXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55VmFsaWRhdG9yKFxyXG4gICAgICBsYW5ndWFnZXMsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogTW9tZW50XHJcbiAqL1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRfWydkZWZhdWx0J107XHJcbiJdfQ==
|
|
123
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMmh0a3Ryb3g4ZCIsImFjdHVhbENvdmVyYWdlIiwibW9tZW50XyIsImVtYWlsVmFsaWRhdG9yIiwiZXF1YWxzVmFsdWVWYWxpZGF0b3IiLCJpc1ZhbGlkRGF0ZVZhbGlkYXRvciIsIm1heERhdGVWYWxpZGF0b3IiLCJtYXhUaW1lVmFsaWRhdG9yIiwibWF4VmFsdWVWYWxpZGF0b3IiLCJtaW5EYXRlVmFsaWRhdG9yIiwibWluRmlsZXNWYWxpZGF0b3IiLCJtaW5MZW5ndGhWYWxpZGF0b3IiLCJtaW5UaW1lVmFsaWRhdG9yIiwibWluVmFsdWVWYWxpZGF0b3IiLCJtdWx0aWxhbmd1YWdlUmVxdWlyZWRWYWxpZGF0b3IiLCJtdWx0aWxhbmd1YWdlUmVxdWlyZWRBbnlWYWxpZGF0b3IiLCJub3RFcXVhbHNWYWx1ZVZhbGlkYXRvciIsInBhdHRlcm5WYWxpZGF0b3IiLCJyZXF1aXJlZFZhbGlkYXRvciIsIkNyZWF0ZVZhbGlkYXRpb25FcnJvciIsIlZhbGlkYXRpb24iLCJHZXRWYWxpZGF0aW9uRXJyb3JJdGVtIiwiZXJyb3JUeXBlIiwiZXJyb3JNZXNzYWdlS2V5IiwiZXJyb3JNZXNzYWdlVmFsaWRhdGlvblN1bW1hcnlLZXkiLCJmaWVsZE5hbWUiLCJiIiwicGFyYW1ldGVycyIsIk1hcCIsImYiLCJzIiwicmVxdWlyZWQiLCJ2YWxpZGF0aW9uTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSIsImVxdWFscyIsInJlcXVpcmVkVmFsdWUiLCJtaW5WYWx1ZSIsIm1pbnZhbHVlIiwicGF0dGVybiIsIm1heFZhbHVlIiwibWF4dmFsdWUiLCJlbWFpbCIsIm1pbkxlbmd0aCIsIm1pbmxlbmd0aCIsIm1pbkRhdGUiLCJtYXhEYXRlIiwibWluVGltZSIsIm1heFRpbWUiLCJpc1ZhbGlkRGF0ZSIsIm1pbkZpbGVzIiwibm90ZXF1YWxzIiwiaW52YWxpZFZhbHVlIiwibXVsdGlsYW5ndWFnZVJlcXVpcmVkIiwibGFuZ3VhZ2VzIiwibXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55IiwibW9tZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvdmFsaWRhdGlvbi92YWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcclxuXHJcbmltcG9ydCB7IFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2xhbmd1YWdlbW9kZWwnO1xyXG5pbXBvcnQgeyBlbWFpbFZhbGlkYXRvciB9IGZyb20gJy4vZW1haWwudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgZXF1YWxzVmFsdWVWYWxpZGF0b3IgfSBmcm9tICcuL2VxdWFscy52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBpc1ZhbGlkRGF0ZVZhbGlkYXRvciB9IGZyb20gJy4vaW52YWxpZGRhdGUudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbWF4RGF0ZVZhbGlkYXRvciB9IGZyb20gJy4vbWF4ZGF0ZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtYXhUaW1lVmFsaWRhdG9yIH0gZnJvbSAnLi9tYXh0aW1lLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1heFZhbHVlVmFsaWRhdG9yIH0gZnJvbSAnLi9tYXh2YWx1ZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtaW5EYXRlVmFsaWRhdG9yIH0gZnJvbSAnLi9taW5kYXRlLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1pbkZpbGVzVmFsaWRhdG9yIH0gZnJvbSAnLi9taW5maWxlcy52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtaW5MZW5ndGhWYWxpZGF0b3IgfSBmcm9tICcuL21pbmxlbmd0aC52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtaW5UaW1lVmFsaWRhdG9yIH0gZnJvbSAnLi9taW50aW1lLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1pblZhbHVlVmFsaWRhdG9yIH0gZnJvbSAnLi9taW52YWx1ZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtdWx0aWxhbmd1YWdlUmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tICcuL211bHRpbGFuZ3VhZ2VyZXF1aXJlZC52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtdWx0aWxhbmd1YWdlUmVxdWlyZWRBbnlWYWxpZGF0b3IgfSBmcm9tICcuL211bHRpbGFuZ3VhZ2VyZXF1aXJlZGFueS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBub3RFcXVhbHNWYWx1ZVZhbGlkYXRvciB9IGZyb20gJy4vbm90ZXF1YWxzLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHBhdHRlcm5WYWxpZGF0b3IgfSBmcm9tICcuL3BhdHRlcm4udmFsaWRhdG9yJztcclxuaW1wb3J0IHsgcmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tICcuL3JlcXVpcmVkLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IENyZWF0ZVZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4vdmFsaWRhdGlvbmVycm9yY3JlYXRvcic7XHJcblxyXG4vKipcclxuICogS2xhc3NlIG1pdCBTdGFuZGFyZCBWYWxpZGF0b3JlblxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb24ge1xyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIGlzdCB2b24gamVkZW0gVmFsaWRhdG9yIGF1ZmdlcnVmZW4uIERpZSBzZXR6dCBzb3dvaGwgZGVuIGVycm9yVHlwZSBkZXMgZ2VycMO8ZnRlIEl0ZW0sIGFscyBhdWNoIGRpZSBFcnJvck1lc3NhZ2UgKGdlbcOkc3Mgdm9uIGVycm9yVHlwZSwgRmllbGROYW1lIHVuZCBQYXJhbWV0ZXJzKS5cclxuICAgKiBAcGFyYW0gZXJyb3JUeXBlIFR5cCBkZW4gRmVobGVyXHJcbiAgICogQHBhcmFtIGVycm9yTWVzc2FnZUtleSBFcnJvciBNZXNzYWdlIEtleVxyXG4gICAqIEBwYXJhbSBlcnJvck1lc3NhZ2VWYWxpZGF0aW9uU3VtbWFyeUtleSBFcnJvciBNZXNzYWdlIEtleSBmw7xyIFZhbGlkYXRpb24gU3VtbWFyeVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgIExhYmVsIG9kZXIgTmFtZSBkZXMgRmVsZGVzXHJcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgUGFyYW1ldGVybiBkaWUgaW4gZGVuIE1lbGR1bmdlbiBhbHMgUGxhdHpoYWx0ZXIgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuXHJcbiAgICovXHJcbiAgc3RhdGljIEdldFZhbGlkYXRpb25FcnJvckl0ZW0oXHJcbiAgICBlcnJvclR5cGU6IHN0cmluZyxcclxuICAgIGVycm9yTWVzc2FnZUtleTogc3RyaW5nLFxyXG4gICAgZXJyb3JNZXNzYWdlVmFsaWRhdGlvblN1bW1hcnlLZXk6IHN0cmluZyxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nID0gbnVsbCxcclxuICAgIHBhcmFtZXRlcnM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PigpXHJcbiAgKTogYW55IHtcclxuICAgIHJldHVybiBDcmVhdGVWYWxpZGF0aW9uRXJyb3IoXHJcbiAgICAgIGVycm9yVHlwZSxcclxuICAgICAgZXJyb3JNZXNzYWdlS2V5LFxyXG4gICAgICBlcnJvck1lc3NhZ2VWYWxpZGF0aW9uU3VtbWFyeUtleSxcclxuICAgICAgcGFyYW1ldGVyc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciBmw7xyIFJlcXVpcmVkIFN0YXRlXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRpZXJ0IHdpcmRcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIHJlcXVpcmVkKFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiByZXF1aXJlZFZhbGlkYXRvcih2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciB2YWxpZGF0ZSBpZiB2YWx1ZSBpcyB0aGUgcmVxdWlyZWRWYWx1ZVxyXG4gICAqIEBwYXJhbSByZXF1aXJlZFZhbHVlIFZhbHVlIHRoYXQgY29udHJvbCBzaG91bGQgaGF2ZVxyXG4gICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgdG8gYmUgdmFsaWRhdGVcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgdmFsaWRhdGlvbiBtZXNzYWdlIG5lYXIgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IHZhbGlkYXRpb24gaW5zaWRlIHRoZSB2YWxpZGF0aW9uIHN1bW1hcnlcclxuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBlcXVhbHMoXHJcbiAgICByZXF1aXJlZFZhbHVlOiBhbnksXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIGVxdWFsc1ZhbHVlVmFsaWRhdG9yKFxyXG4gICAgICByZXF1aXJlZFZhbHVlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdG9yIGRlciBwcsO8ZnQgb2IgZGVyIFdlcnQgZWluIERhdHVtIGlzdC5cclxuICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIG1pdCBJRGF0ZVRpbWVDb250cm9sIEludGVyZmFjZSBpbXBsZW1lbnRpZXJ1bmdcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1pblZhbHVlKFxyXG4gICAgbWludmFsdWU6IG51bWJlcixcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gbWluVmFsdWVWYWxpZGF0b3IoXHJcbiAgICAgIG1pbnZhbHVlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRpZXJ1bmcgbWl0IGVpbmVtIFJlZ0V4IFBhdHRlcm5cclxuICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGRhcyB2YWxpZGllcnQgd2VyZGVuIHNvbGwuXHJcbiAgICogQHBhcmFtIHBhdHRlcm4gUmVnRXggUGF0dGVyblxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSBpbSBWYWxpZGF0aW9uIFN1bW1hcnkgYW5nZXplaWd0IHdpcmRcclxuICAgKi9cclxuICBzdGF0aWMgcGF0dGVybihcclxuICAgIHBhdHRlcm46IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gcGF0dGVyblZhbGlkYXRvcihcclxuICAgICAgcGF0dGVybixcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciBmw7xyIE1heCBWYWx1ZVxyXG4gICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkaWVydCB3ZXJkZW4gc29sbFxyXG4gICAqIEBwYXJhbSBtYXh2YWx1ZSBNYXguIFdlcnRcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1heFZhbHVlKFxyXG4gICAgbWF4dmFsdWU6IG51bWJlcixcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gbWF4VmFsdWVWYWxpZGF0b3IoXHJcbiAgICAgIG1heHZhbHVlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRpZXJ0IEZlbGQgYXVmIEUtTWFpbCBBZHJlc3NlXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsZGllcnQgd2VyZGVuIHNvbGxcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIGVtYWlsKFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBlbWFpbFZhbGlkYXRvcih2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkaWVydCBhdWYgZGllIEzDpG5nZSBkZXMgV2VydGVzIGltIENvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGRhcyBWYWxpZGllcnQgd2VyZGVuIHNvbGxcclxuICAgKiBAcGFyYW0gbWlubGVuZ3RoIE1pbi4gTMOkbmdlIGRlcyBXZXJ0ZXNcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1pbkxlbmd0aChcclxuICAgIG1pbmxlbmd0aDogbnVtYmVyLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBtaW5MZW5ndGhWYWxpZGF0b3IoXHJcbiAgICAgIG1pbmxlbmd0aCxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkaWVydCBvYiBkYXMgRGF0dW0gbmV1ZXIgYWxzIG1pbkRhdGUgaXN0XHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRpZXJ0IHdlcmRlbiBzb2xsLiBNdXNzIElEYXRlVGltZUNvbnRyb2wgaW1wbGVtZW50aWVydCBoYWJlblxyXG4gICAqIEBwYXJhbSBtaW5EYXRlIE1pbi4gRGF0dW1cclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1pbkRhdGUoXHJcbiAgICBtaW5EYXRlOiBEYXRlLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBtaW5EYXRlVmFsaWRhdG9yKFxyXG4gICAgICBtaW5EYXRlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRpZXJ0IG9iIGRhcyBEYXR1bSDDpGx0ZXIgYWxzIG1heERhdGUgaXN0XHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRpZXJ0IHdlcmRlbiBzb2xsLiBNdXNzIElEYXRlVGltZUNvbnRyb2wgaW1wbGVtZW50aWVydCBoYWJlblxyXG4gICAqIEBwYXJhbSBtYXhEYXRlIG1heC4gRGF0dW1cclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1heERhdGUoXHJcbiAgICBtYXhEYXRlOiBEYXRlLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBtYXhEYXRlVmFsaWRhdG9yKFxyXG4gICAgICBtYXhEYXRlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRpZXJ0IG9iIGRpZSBaZWl0IHNww6R0ZXIgYWxzIG1pblRpbWUgaXN0LlxyXG4gICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkaWVydCB3ZXJkZW4gc29sbC4gTXVzcyBJRGF0ZVRpbWVDb250cm9sIGltcGxlbWVudGllcnQgaGFiZW5cclxuICAgKiBAcGFyYW0gbWluVGltZSBNaW4uIFplaXRcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIG1pblRpbWUoXHJcbiAgICBtaW5UaW1lOiBEYXRlLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeTogc3RyaW5nXHJcbiAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIG1pblRpbWVWYWxpZGF0b3IoXHJcbiAgICAgIG1pblRpbWUsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGllcnQgb2IgZGllIFplaXQgZnLDvGhlciBhbHMgbWF4VGltZSBpc3QuXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRpZXJ0IHdlcmRlbiBzb2xsLiBNdXNzIElEYXRlVGltZUNvbnRyb2wgaW1wbGVtZW50aWVydCBoYWJlblxyXG4gICAqIEBwYXJhbSBtYXhUaW1lIE1pbi4gWmVpdFxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSBpbSBWYWxpZGF0aW9uIFN1bW1hcnkgYW5nZXplaWd0IHdpcmRcclxuICAgKi9cclxuICBzdGF0aWMgbWF4VGltZShcclxuICAgIG1heFRpbWU6IERhdGUsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIG1heFRpbWVWYWxpZGF0b3IoXHJcbiAgICAgIG1heFRpbWUsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0b3IgZGVyIHByw7xmdCBvYiBkZXIgV2VydCBlaW4gRGF0dW0gaXN0LlxyXG4gICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgbWl0IElEYXRlVGltZUNvbnRyb2wgSW50ZXJmYWNlIGltcGxlbWVudGllcnVuZ1xyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGJlaW0gQ29udHJvbCBhbmdlemVpZ3Qgd2lyZFxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgc3RhdGljIGlzVmFsaWREYXRlKFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiBpc1ZhbGlkRGF0ZVZhbGlkYXRvcih2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciBmw7xyIG1pbi4gQW56YWhsIHZvbiBVcGxvYWRzXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRhdGllcnQgd2VyZGVuIHNvbGwuIENvbnRyb2wgbXVzcyBJVXBsb2FkQ29udHJvbCBpbXBsZW1lbnRpZXJ0IGhhYmVuXHJcbiAgICogQHBhcmFtIG1pbkZpbGVzIE1pbi4gQW56YWhsIEZpbGVzIGRpZSBob2NoZ2VsYWRlbiB3ZXJkZW4gbcO8c3NlblxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllIHVudGVyaGFsYiBkZXMgQ29udHJvbHMgYW5nZXplaWd0IHdpcmRcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAqL1xyXG4gIHN0YXRpYyBtaW5GaWxlcyhcclxuICAgIG1pbkZpbGVzOiBudW1iZXIsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIG1pbkZpbGVzVmFsaWRhdG9yKFxyXG4gICAgICBtaW5GaWxlcyxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciB2YWxpZGF0ZSBpZiB2YWx1ZSBpcyBub3QgdGhlIGludmFsaWRWYWx1ZVxyXG4gICAqIEBwYXJhbSBpbnZhbGlkVmFsdWUgVmFsdWUgdGhhdCBjb250cm9sIGRvZXNuJ3Qgc2hvdWxkIGhhdmVcclxuICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIHRvIGJlIHZhbGlkYXRlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBMYWJlbCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIHZhbGlkYXRpb24gbWVzc2FnZSBuZWFyIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSB2YWxpZGF0aW9uIGluc2lkZSB0aGUgdmFsaWRhdGlvbiBzdW1tYXJ5XHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBub3RlcXVhbHMoXHJcbiAgICBpbnZhbGlkVmFsdWU6IGFueSxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gbm90RXF1YWxzVmFsdWVWYWxpZGF0b3IoXHJcbiAgICAgIGludmFsaWRWYWx1ZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkaWVydW5nIG1pdCBlaW5lbSBSZWdFeCBQYXR0ZXJuXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgdmFsaWRpZXJ0IHdlcmRlbiBzb2xsLlxyXG4gICAqIEBwYXJhbSBwYXR0ZXJuIFJlZ0V4IFBhdHRlcm5cclxuICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSB1bnRlcmhhbGIgZGVzIENvbnRyb2xzIGFuZ2V6ZWlndCB3aXJkXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSBpbSBWYWxpZGF0aW9uIFN1bW1hcnkgYW5nZXplaWd0IHdpcmRcclxuICAgKi9cclxuICBzdGF0aWMgbXVsdGlsYW5ndWFnZVJlcXVpcmVkKFxyXG4gICAgbGFuZ3VhZ2VzOiBMYW5ndWFnZU1vZGVsW10sXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIG11bHRpbGFuZ3VhZ2VSZXF1aXJlZFZhbGlkYXRvcihcclxuICAgICAgbGFuZ3VhZ2VzLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSxcclxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdG9yIGbDvHIgTXVsdGlMYW5ndWFnZSBDb250cm9sLCB3ZWxjaGVyIMO8YmVycHLDvGZ0IG9iIG1pbi4gZWluIFdlcnQgZXJmYXNzdCB3dXJkZVxyXG4gICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkYXRpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICogQHBhcmFtIGxhbmd1YWdlcyBTcHJhY2hlbiBkaWUgaW0gQ29udHJvbCBlcmZhc3N0IHdlcmRlbiBrw7ZubmVuLlxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllIHVudGVyaGFsYiBkZXMgQ29udHJvbHMgYW5nZXplaWd0IHdpcmRcclxuICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAqL1xyXG4gIHN0YXRpYyBtdWx0aWxhbmd1YWdlUmVxdWlyZWRBbnkoXHJcbiAgICBsYW5ndWFnZXM6IExhbmd1YWdlTW9kZWxbXSxcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gbXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55VmFsaWRhdG9yKFxyXG4gICAgICBsYW5ndWFnZXMsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogTW9tZW50XHJcbiAqL1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRfWydkZWZhdWx0J107XHJcbiJdLCJtYXBwaW5ncyI6InV0cEJBa0JTO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQWxCVCxNQUFPLEdBQUssQ0FBQUUsT0FBTyxLQUFNLFFBQVEsQ0FJakMsT0FBU0MsY0FBYyxLQUFRLG1CQUFtQixDQUNsRCxPQUFTQyxvQkFBb0IsS0FBUSxvQkFBb0IsQ0FDekQsT0FBU0Msb0JBQW9CLEtBQVEseUJBQXlCLENBQzlELE9BQVNDLGdCQUFnQixLQUFRLHFCQUFxQixDQUN0RCxPQUFTQyxnQkFBZ0IsS0FBUSxxQkFBcUIsQ0FDdEQsT0FBU0MsaUJBQWlCLEtBQVEsc0JBQXNCLENBQ3hELE9BQVNDLGdCQUFnQixLQUFRLHFCQUFxQixDQUN0RCxPQUFTQyxpQkFBaUIsS0FBUSxzQkFBc0IsQ0FDeEQsT0FBU0Msa0JBQWtCLEtBQVEsdUJBQXVCLENBQzFELE9BQVNDLGdCQUFnQixLQUFRLHFCQUFxQixDQUN0RCxPQUFTQyxpQkFBaUIsS0FBUSxzQkFBc0IsQ0FDeEQsT0FBU0MsOEJBQThCLEtBQVEsbUNBQW1DLENBQ2xGLE9BQVNDLGlDQUFpQyxLQUFRLHNDQUFzQyxDQUN4RixPQUFTQyx1QkFBdUIsS0FBUSx1QkFBdUIsQ0FDL0QsT0FBU0MsZ0JBQWdCLEtBQVEscUJBQXFCLENBQ3RELE9BQVNDLGlCQUFpQixLQUFRLHNCQUFzQixD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
|
|
126
|
+
*/static required(validationMessage,validationMessageSummary){cov_2htktrox8d().f[16]++;cov_2htktrox8d().s[17]++;return requiredValidator(validationMessage,validationMessageSummary);}}// #endregion Exported Classes
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0s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Li9tb2RlbHMvbGFuZ3VhZ2Vtb2RlbCc7XHJcbmltcG9ydCB7IGVtYWlsVmFsaWRhdG9yIH0gZnJvbSAnLi9lbWFpbC52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBlcXVhbHNWYWx1ZVZhbGlkYXRvciB9IGZyb20gJy4vZXF1YWxzLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IGlzVmFsaWREYXRlVmFsaWRhdG9yIH0gZnJvbSAnLi9pbnZhbGlkZGF0ZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtYXhEYXRlVmFsaWRhdG9yIH0gZnJvbSAnLi9tYXhkYXRlLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1heFRpbWVWYWxpZGF0b3IgfSBmcm9tICcuL21heHRpbWUudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbWF4VmFsdWVWYWxpZGF0b3IgfSBmcm9tICcuL21heHZhbHVlLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1pbkRhdGVWYWxpZGF0b3IgfSBmcm9tICcuL21pbmRhdGUudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbWluRmlsZXNWYWxpZGF0b3IgfSBmcm9tICcuL21pbmZpbGVzLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1pblRleHRMZW5ndGhWYWxpZGF0b3IgfSBmcm9tICcuL21pbnRleHRsZW5ndGgudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbWluVGltZVZhbGlkYXRvciB9IGZyb20gJy4vbWludGltZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtaW5WYWx1ZVZhbGlkYXRvciB9IGZyb20gJy4vbWludmFsdWUudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbXVsdGlsYW5ndWFnZVJlcXVpcmVkVmFsaWRhdG9yIH0gZnJvbSAnLi9tdWx0aWxhbmd1YWdlcmVxdWlyZWQudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55VmFsaWRhdG9yIH0gZnJvbSAnLi9tdWx0aWxhbmd1YWdlcmVxdWlyZWRhbnkudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbm90RXF1YWxzVmFsdWVWYWxpZGF0b3IgfSBmcm9tICcuL25vdGVxdWFscy52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBwYXR0ZXJuVmFsaWRhdG9yIH0gZnJvbSAnLi9wYXR0ZXJuLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHJlcXVpcmVkVmFsaWRhdG9yIH0gZnJvbSAnLi9yZXF1aXJlZC52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBDcmVhdGVWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL3ZhbGlkYXRpb25lcnJvcmNyZWF0b3InO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5cclxuLy8gI3JlZ2lvbiBWYXJpYWJsZXNcclxuXHJcbi8qKlxyXG4gKiBNb21lbnRcclxuICovXHJcbmNvbnN0IG1vbWVudCA9IG1vbWVudF9bJ2RlZmF1bHQnXTtcclxuXHJcbi8vICNlbmRyZWdpb24gVmFyaWFibGVzXHJcblxyXG4vLyAjcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcclxuXHJcbi8qKlxyXG4gKiBLbGFzc2UgbWl0IFN0YW5kYXJkIFZhbGlkYXRvcmVuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbiB7XHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBTdGF0aWMgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGllIE1ldGhvZGUgaXN0IHZvbiBqZWRlbSBWYWxpZGF0b3IgYXVmZ2VydWZlbi4gRGllIHNldHp0IHNvd29obCBkZW4gZXJyb3JUeXBlIGRlcyBnZXJww7xmdGUgSXRlbSwgYWxzIGF1Y2ggZGllIEVycm9yTWVzc2FnZSAoZ2Vtw6RzcyB2b24gZXJyb3JUeXBlLCBGaWVsZE5hbWUgdW5kIFBhcmFtZXRlcnMpLlxyXG4gICAgICogQHBhcmFtIGVycm9yVHlwZSBUeXAgZGVuIEZlaGxlclxyXG4gICAgICogQHBhcmFtIGVycm9yTWVzc2FnZUtleSBFcnJvciBNZXNzYWdlIEtleVxyXG4gICAgICogQHBhcmFtIGVycm9yTWVzc2FnZVZhbGlkYXRpb25TdW1tYXJ5S2V5IEVycm9yIE1lc3NhZ2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBTdW1tYXJ5XHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lICBMYWJlbCBvZGVyIE5hbWUgZGVzIEZlbGRlc1xyXG4gICAgICogQHBhcmFtIHBhcmFtZXRlcnMgUGFyYW1ldGVybiBkaWUgaW4gZGVuIE1lbGR1bmdlbiBhbHMgUGxhdHpoYWx0ZXIgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0VmFsaWRhdGlvbkVycm9ySXRlbShcclxuICAgICAgICBlcnJvclR5cGU6IHN0cmluZyxcclxuICAgICAgICBlcnJvck1lc3NhZ2VLZXk6IHN0cmluZyxcclxuICAgICAgICBlcnJvck1lc3NhZ2VWYWxpZGF0aW9uU3VtbWFyeUtleTogc3RyaW5nLFxyXG4gICAgICAgIGZpZWxkTmFtZTogc3RyaW5nID0gbnVsbCxcclxuICAgICAgICBwYXJhbWV0ZXJzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKVxyXG4gICAgKTogYW55IHtcclxuICAgICAgICByZXR1cm4gQ3JlYXRlVmFsaWRhdGlvbkVycm9yKGVycm9yVHlwZSwgZXJyb3JNZXNzYWdlS2V5LCBlcnJvck1lc3NhZ2VWYWxpZGF0aW9uU3VtbWFyeUtleSwgcGFyYW1ldGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnQgRmVsZCBhdWYgRS1NYWlsIEFkcmVzc2VcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGRpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGVtYWlsKHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gZW1haWxWYWxpZGF0b3IodmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogVmFsaWRhdG9yIHZhbGlkYXRlIGlmIHZhbHVlIGlzIHRoZSByZXF1aXJlZFZhbHVlXHJcbiAgICogQHBhcmFtIHJlcXVpcmVkVmFsdWUgVmFsdWUgdGhhdCBjb250cm9sIHNob3VsZCBoYXZlXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCB0byBiZSB2YWxpZGF0ZVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSB2YWxpZGF0aW9uIG1lc3NhZ2UgbmVhciB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgdmFsaWRhdGlvbiBpbnNpZGUgdGhlIHZhbGlkYXRpb24gc3VtbWFyeVxyXG5cclxuICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZXF1YWxzKHJlcXVpcmVkVmFsdWU6IGFueSwgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZywgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiBlcXVhbHNWYWx1ZVZhbGlkYXRvcihyZXF1aXJlZFZhbHVlLCB2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBkZXIgcHLDvGZ0IG9iIGRlciBXZXJ0IGVpbiBEYXR1bSBpc3QuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIG1pdCBJRGF0ZVRpbWVDb250cm9sIEludGVyZmFjZSBpbXBsZW1lbnRpZXJ1bmdcclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgYmVpbSBDb250cm9sIGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzVmFsaWREYXRlKHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gaXNWYWxpZERhdGVWYWxpZGF0b3IodmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnQgb2IgZGFzIERhdHVtIMOkbHRlciBhbHMgbWF4RGF0ZSBpc3RcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkaWVydCB3ZXJkZW4gc29sbC4gTXVzcyBJRGF0ZVRpbWVDb250cm9sIGltcGxlbWVudGllcnQgaGFiZW5cclxuICAgICAqIEBwYXJhbSBtYXhEYXRlIG1heC4gRGF0dW1cclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWVcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbWF4RGF0ZShtYXhEYXRlOiBEYXRlLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG1heERhdGVWYWxpZGF0b3IobWF4RGF0ZSwgdmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnQgb2IgZGllIFplaXQgZnLDvGhlciBhbHMgbWF4VGltZSBpc3QuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGRhcyBWYWxpZGllcnQgd2VyZGVuIHNvbGwuIE11c3MgSURhdGVUaW1lQ29udHJvbCBpbXBsZW1lbnRpZXJ0IGhhYmVuXHJcbiAgICAgKiBAcGFyYW0gbWF4VGltZSBNaW4uIFplaXRcclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWVcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbWF4VGltZShtYXhUaW1lOiBEYXRlLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG1heFRpbWVWYWxpZGF0b3IobWF4VGltZSwgdmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0b3IgZsO8ciBNYXggVmFsdWVcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkaWVydCB3ZXJkZW4gc29sbFxyXG4gICAgICogQHBhcmFtIG1heHZhbHVlIE1heC4gV2VydFxyXG4gICAgICogQHBhcmFtIGZpZWxkTmFtZSBMYWJlbCBkZXMgQ29udHJvbHNcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSBpbSBWYWxpZGF0aW9uIFN1bW1hcnkgYW5nZXplaWd0IHdpcmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhWYWx1ZShtYXh2YWx1ZTogbnVtYmVyLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG1heFZhbHVlVmFsaWRhdG9yKG1heHZhbHVlLCB2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkaWVydCBvYiBkYXMgRGF0dW0gbmV1ZXIgYWxzIG1pbkRhdGUgaXN0XHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGRhcyBWYWxpZGllcnQgd2VyZGVuIHNvbGwuIE11c3MgSURhdGVUaW1lQ29udHJvbCBpbXBsZW1lbnRpZXJ0IGhhYmVuXHJcbiAgICAgKiBAcGFyYW0gbWluRGF0ZSBNaW4uIERhdHVtXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG1pbkRhdGUobWluRGF0ZTogRGF0ZSwgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZywgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiBtaW5EYXRlVmFsaWRhdG9yKG1pbkRhdGUsIHZhbGlkYXRpb25NZXNzYWdlLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yIGbDvHIgbWluLiBBbnphaGwgdm9uIFVwbG9hZHNcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkYXRpZXJ0IHdlcmRlbiBzb2xsLiBDb250cm9sIG11c3MgSVVwbG9hZENvbnRyb2wgaW1wbGVtZW50aWVydCBoYWJlblxyXG4gICAgICogQHBhcmFtIG1pbkZpbGVzIE1pbi4gQW56YWhsIEZpbGVzIGRpZSBob2NoZ2VsYWRlbiB3ZXJkZW4gbcO8c3NlblxyXG4gICAgICogQHBhcmFtIGZpZWxkTmFtZSBMYWJlbCBkZXMgQ29udHJvbHNcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSB1bnRlcmhhbGIgZGVzIENvbnRyb2xzIGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG1pbkZpbGVzKG1pbkZpbGVzOiBudW1iZXIsIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gbWluRmlsZXNWYWxpZGF0b3IobWluRmlsZXMsIHZhbGlkYXRpb25NZXNzYWdlLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRpZXJ0IGF1ZiBkaWUgTMOkbmdlIGRlcyBXZXJ0ZXMgaW0gQ29udHJvbFxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICAgKiBAcGFyYW0gbWludGV4dGxlbmd0aCBNaW4uIEzDpG5nZSBkZXMgV2VydGVzXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG1pblRleHRMZW5ndGgobWludGV4dGxlbmd0aDogbnVtYmVyLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG1pblRleHRMZW5ndGhWYWxpZGF0b3IobWludGV4dGxlbmd0aCwgdmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnQgb2IgZGllIFplaXQgc3DDpHRlciBhbHMgbWluVGltZSBpc3QuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGRhcyBWYWxpZGllcnQgd2VyZGVuIHNvbGwuIE11c3MgSURhdGVUaW1lQ29udHJvbCBpbXBsZW1lbnRpZXJ0IGhhYmVuXHJcbiAgICAgKiBAcGFyYW0gbWluVGltZSBNaW4uIFplaXRcclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWVcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbWluVGltZShtaW5UaW1lOiBEYXRlLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnk6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gbWluVGltZVZhbGlkYXRvcihtaW5UaW1lLCB2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBkZXIgcHLDvGZ0IG9iIGRlciBXZXJ0IGVpbiBEYXR1bSBpc3QuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIG1pdCBJRGF0ZVRpbWVDb250cm9sIEludGVyZmFjZSBpbXBsZW1lbnRpZXJ1bmdcclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWVcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbWluVmFsdWUobWludmFsdWU6IG51bWJlciwgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZywgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiBtaW5WYWx1ZVZhbGlkYXRvcihtaW52YWx1ZSwgdmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnVuZyBtaXQgZWluZW0gUmVnRXggUGF0dGVyblxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgdmFsaWRpZXJ0IHdlcmRlbiBzb2xsLlxyXG4gICAgICogQHBhcmFtIHBhdHRlcm4gUmVnRXggUGF0dGVyblxyXG4gICAgICogQHBhcmFtIGZpZWxkTmFtZSBMYWJlbCBkZXMgQ29udHJvbHNcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSB1bnRlcmhhbGIgZGVzIENvbnRyb2xzIGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG11bHRpbGFuZ3VhZ2VSZXF1aXJlZChcclxuICAgICAgICBsYW5ndWFnZXM6IExhbmd1YWdlTW9kZWxbXSxcclxuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLFxyXG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiBtdWx0aWxhbmd1YWdlUmVxdWlyZWRWYWxpZGF0b3IobGFuZ3VhZ2VzLCB2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBmw7xyIE11bHRpTGFuZ3VhZ2UgQ29udHJvbCwgd2VsY2hlciDDvGJlcnByw7xmdCBvYiBtaW4uIGVpbiBXZXJ0IGVyZmFzc3Qgd3VyZGVcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkYXRpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICAgKiBAcGFyYW0gbGFuZ3VhZ2VzIFNwcmFjaGVuIGRpZSBpbSBDb250cm9sIGVyZmFzc3Qgd2VyZGVuIGvDtm5uZW4uXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllIHVudGVyaGFsYiBkZXMgQ29udHJvbHMgYW5nZXplaWd0IHdpcmRcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55KFxyXG4gICAgICAgIGxhbmd1YWdlczogTGFuZ3VhZ2VNb2RlbFtdLFxyXG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG11bHRpbGFuZ3VhZ2VSZXF1aXJlZEFueVZhbGlkYXRvcihsYW5ndWFnZXMsIHZhbGlkYXRpb25NZXNzYWdlLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yIHZhbGlkYXRlIGlmIHZhbHVlIGlzIG5vdCB0aGUgaW52YWxpZFZhbHVlXHJcbiAgICAgKiBAcGFyYW0gaW52YWxpZFZhbHVlIFZhbHVlIHRoYXQgY29udHJvbCBkb2Vzbid0IHNob3VsZCBoYXZlXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIHRvIGJlIHZhbGlkYXRlXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIG9mIGNvbnRyb2xcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSB2YWxpZGF0aW9uIG1lc3NhZ2UgbmVhciB0aGUgY29udHJvbFxyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSB2YWxpZGF0aW9uIGluc2lkZSB0aGUgdmFsaWRhdGlvbiBzdW1tYXJ5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbm90ZXF1YWxzKGludmFsaWRWYWx1ZTogYW55LCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG5vdEVxdWFsc1ZhbHVlVmFsaWRhdG9yKGludmFsaWRWYWx1ZSwgdmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnVuZyBtaXQgZWluZW0gUmVnRXggUGF0dGVyblxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgdmFsaWRpZXJ0IHdlcmRlbiBzb2xsLlxyXG4gICAgICogQHBhcmFtIHBhdHRlcm4gUmVnRXggUGF0dGVyblxyXG4gICAgICogQHBhcmFtIGZpZWxkTmFtZSBMYWJlbCBkZXMgQ29udHJvbHNcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSBpbSBWYWxpZGF0aW9uIFN1bW1hcnkgYW5nZXplaWd0IHdpcmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBwYXR0ZXJuKHBhdHRlcm46IHN0cmluZywgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZywgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiBwYXR0ZXJuVmFsaWRhdG9yKHBhdHRlcm4sIHZhbGlkYXRpb25NZXNzYWdlLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yIGbDvHIgUmVxdWlyZWQgU3RhdGVcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkaWVydCB3aXJkXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHJlcXVpcmVkKHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gcmVxdWlyZWRWYWxpZGF0b3IodmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgU3RhdGljIE1ldGhvZHNcclxufVxyXG5cclxuLy8gI2VuZHJlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXHJcbiJdfQ==
|
|
128
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMmh0a3Ryb3g4ZCIsImFjdHVhbENvdmVyYWdlIiwiZW1haWxWYWxpZGF0b3IiLCJlcXVhbHNWYWx1ZVZhbGlkYXRvciIsImlzVmFsaWREYXRlVmFsaWRhdG9yIiwibWF4RGF0ZVZhbGlkYXRvciIsIm1heFRpbWVWYWxpZGF0b3IiLCJtYXhWYWx1ZVZhbGlkYXRvciIsIm1pbkRhdGVWYWxpZGF0b3IiLCJtaW5GaWxlc1ZhbGlkYXRvciIsIm1pblRleHRMZW5ndGhWYWxpZGF0b3IiLCJtaW5UaW1lVmFsaWRhdG9yIiwibWluVmFsdWVWYWxpZGF0b3IiLCJtdWx0aWxhbmd1YWdlUmVxdWlyZWRWYWxpZGF0b3IiLCJtdWx0aWxhbmd1YWdlUmVxdWlyZWRBbnlWYWxpZGF0b3IiLCJub3RFcXVhbHNWYWx1ZVZhbGlkYXRvciIsInBhdHRlcm5WYWxpZGF0b3IiLCJyZXF1aXJlZFZhbGlkYXRvciIsIkNyZWF0ZVZhbGlkYXRpb25FcnJvciIsIm1vbWVudF8iLCJtb21lbnQiLCJzIiwiVmFsaWRhdGlvbiIsIkdldFZhbGlkYXRpb25FcnJvckl0ZW0iLCJlcnJvclR5cGUiLCJlcnJvck1lc3NhZ2VLZXkiLCJlcnJvck1lc3NhZ2VWYWxpZGF0aW9uU3VtbWFyeUtleSIsImZpZWxkTmFtZSIsImIiLCJwYXJhbWV0ZXJzIiwiTWFwIiwiZiIsImVtYWlsIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkiLCJlcXVhbHMiLCJyZXF1aXJlZFZhbHVlIiwiaXNWYWxpZERhdGUiLCJtYXhEYXRlIiwibWF4VGltZSIsIm1heFZhbHVlIiwibWF4dmFsdWUiLCJtaW5EYXRlIiwibWluRmlsZXMiLCJtaW5UZXh0TGVuZ3RoIiwibWludGV4dGxlbmd0aCIsIm1pblRpbWUiLCJtaW5WYWx1ZSIsIm1pbnZhbHVlIiwibXVsdGlsYW5ndWFnZVJlcXVpcmVkIiwibGFuZ3VhZ2VzIiwibXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55Iiwibm90ZXF1YWxzIiwiaW52YWxpZFZhbHVlIiwicGF0dGVybiIsInJlcXVpcmVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvdmFsaWRhdGlvbi92YWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhbmd1YWdlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbGFuZ3VhZ2Vtb2RlbCc7XHJcbmltcG9ydCB7IGVtYWlsVmFsaWRhdG9yIH0gZnJvbSAnLi9lbWFpbC52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBlcXVhbHNWYWx1ZVZhbGlkYXRvciB9IGZyb20gJy4vZXF1YWxzLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IGlzVmFsaWREYXRlVmFsaWRhdG9yIH0gZnJvbSAnLi9pbnZhbGlkZGF0ZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtYXhEYXRlVmFsaWRhdG9yIH0gZnJvbSAnLi9tYXhkYXRlLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1heFRpbWVWYWxpZGF0b3IgfSBmcm9tICcuL21heHRpbWUudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbWF4VmFsdWVWYWxpZGF0b3IgfSBmcm9tICcuL21heHZhbHVlLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1pbkRhdGVWYWxpZGF0b3IgfSBmcm9tICcuL21pbmRhdGUudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbWluRmlsZXNWYWxpZGF0b3IgfSBmcm9tICcuL21pbmZpbGVzLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IG1pblRleHRMZW5ndGhWYWxpZGF0b3IgfSBmcm9tICcuL21pbnRleHRsZW5ndGgudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbWluVGltZVZhbGlkYXRvciB9IGZyb20gJy4vbWludGltZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBtaW5WYWx1ZVZhbGlkYXRvciB9IGZyb20gJy4vbWludmFsdWUudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbXVsdGlsYW5ndWFnZVJlcXVpcmVkVmFsaWRhdG9yIH0gZnJvbSAnLi9tdWx0aWxhbmd1YWdlcmVxdWlyZWQudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55VmFsaWRhdG9yIH0gZnJvbSAnLi9tdWx0aWxhbmd1YWdlcmVxdWlyZWRhbnkudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgbm90RXF1YWxzVmFsdWVWYWxpZGF0b3IgfSBmcm9tICcuL25vdGVxdWFscy52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBwYXR0ZXJuVmFsaWRhdG9yIH0gZnJvbSAnLi9wYXR0ZXJuLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHJlcXVpcmVkVmFsaWRhdG9yIH0gZnJvbSAnLi9yZXF1aXJlZC52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyBDcmVhdGVWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL3ZhbGlkYXRpb25lcnJvcmNyZWF0b3InO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5cclxuLy8gI3JlZ2lvbiBWYXJpYWJsZXNcclxuXHJcbi8qKlxyXG4gKiBNb21lbnRcclxuICovXHJcbmNvbnN0IG1vbWVudCA9IG1vbWVudF9bJ2RlZmF1bHQnXTtcclxuXHJcbi8vICNlbmRyZWdpb24gVmFyaWFibGVzXHJcblxyXG4vLyAjcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcclxuXHJcbi8qKlxyXG4gKiBLbGFzc2UgbWl0IFN0YW5kYXJkIFZhbGlkYXRvcmVuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbiB7XHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBTdGF0aWMgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGllIE1ldGhvZGUgaXN0IHZvbiBqZWRlbSBWYWxpZGF0b3IgYXVmZ2VydWZlbi4gRGllIHNldHp0IHNvd29obCBkZW4gZXJyb3JUeXBlIGRlcyBnZXJww7xmdGUgSXRlbSwgYWxzIGF1Y2ggZGllIEVycm9yTWVzc2FnZSAoZ2Vtw6RzcyB2b24gZXJyb3JUeXBlLCBGaWVsZE5hbWUgdW5kIFBhcmFtZXRlcnMpLlxyXG4gICAgICogQHBhcmFtIGVycm9yVHlwZSBUeXAgZGVuIEZlaGxlclxyXG4gICAgICogQHBhcmFtIGVycm9yTWVzc2FnZUtleSBFcnJvciBNZXNzYWdlIEtleVxyXG4gICAgICogQHBhcmFtIGVycm9yTWVzc2FnZVZhbGlkYXRpb25TdW1tYXJ5S2V5IEVycm9yIE1lc3NhZ2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBTdW1tYXJ5XHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lICBMYWJlbCBvZGVyIE5hbWUgZGVzIEZlbGRlc1xyXG4gICAgICogQHBhcmFtIHBhcmFtZXRlcnMgUGFyYW1ldGVybiBkaWUgaW4gZGVuIE1lbGR1bmdlbiBhbHMgUGxhdHpoYWx0ZXIgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0VmFsaWRhdGlvbkVycm9ySXRlbShcclxuICAgICAgICBlcnJvclR5cGU6IHN0cmluZyxcclxuICAgICAgICBlcnJvck1lc3NhZ2VLZXk6IHN0cmluZyxcclxuICAgICAgICBlcnJvck1lc3NhZ2VWYWxpZGF0aW9uU3VtbWFyeUtleTogc3RyaW5nLFxyXG4gICAgICAgIGZpZWxkTmFtZTogc3RyaW5nID0gbnVsbCxcclxuICAgICAgICBwYXJhbWV0ZXJzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKVxyXG4gICAgKTogYW55IHtcclxuICAgICAgICByZXR1cm4gQ3JlYXRlVmFsaWRhdGlvbkVycm9yKGVycm9yVHlwZSwgZXJyb3JNZXNzYWdlS2V5LCBlcnJvck1lc3NhZ2VWYWxpZGF0aW9uU3VtbWFyeUtleSwgcGFyYW1ldGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnQgRmVsZCBhdWYgRS1NYWlsIEFkcmVzc2VcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGRpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGVtYWlsKHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gZW1haWxWYWxpZGF0b3IodmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogVmFsaWRhdG9yIHZhbGlkYXRlIGlmIHZhbHVlIGlzIHRoZSByZXF1aXJlZFZhbHVlXHJcbiAgICogQHBhcmFtIHJlcXVpcmVkVmFsdWUgVmFsdWUgdGhhdCBjb250cm9sIHNob3VsZCBoYXZlXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCB0byBiZSB2YWxpZGF0ZVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSB2YWxpZGF0aW9uIG1lc3NhZ2UgbmVhciB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgdmFsaWRhdGlvbiBpbnNpZGUgdGhlIHZhbGlkYXRpb24gc3VtbWFyeVxyXG5cclxuICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZXF1YWxzKHJlcXVpcmVkVmFsdWU6IGFueSwgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZywgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiBlcXVhbHNWYWx1ZVZhbGlkYXRvcihyZXF1aXJlZFZhbHVlLCB2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBkZXIgcHLDvGZ0IG9iIGRlciBXZXJ0IGVpbiBEYXR1bSBpc3QuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIG1pdCBJRGF0ZVRpbWVDb250cm9sIEludGVyZmFjZSBpbXBsZW1lbnRpZXJ1bmdcclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgYmVpbSBDb250cm9sIGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzVmFsaWREYXRlKHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gaXNWYWxpZERhdGVWYWxpZGF0b3IodmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnQgb2IgZGFzIERhdHVtIMOkbHRlciBhbHMgbWF4RGF0ZSBpc3RcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkaWVydCB3ZXJkZW4gc29sbC4gTXVzcyBJRGF0ZVRpbWVDb250cm9sIGltcGxlbWVudGllcnQgaGFiZW5cclxuICAgICAqIEBwYXJhbSBtYXhEYXRlIG1heC4gRGF0dW1cclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWVcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbWF4RGF0ZShtYXhEYXRlOiBEYXRlLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG1heERhdGVWYWxpZGF0b3IobWF4RGF0ZSwgdmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnQgb2IgZGllIFplaXQgZnLDvGhlciBhbHMgbWF4VGltZSBpc3QuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGRhcyBWYWxpZGllcnQgd2VyZGVuIHNvbGwuIE11c3MgSURhdGVUaW1lQ29udHJvbCBpbXBsZW1lbnRpZXJ0IGhhYmVuXHJcbiAgICAgKiBAcGFyYW0gbWF4VGltZSBNaW4uIFplaXRcclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWVcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbWF4VGltZShtYXhUaW1lOiBEYXRlLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG1heFRpbWVWYWxpZGF0b3IobWF4VGltZSwgdmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0b3IgZsO8ciBNYXggVmFsdWVcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkaWVydCB3ZXJkZW4gc29sbFxyXG4gICAgICogQHBhcmFtIG1heHZhbHVlIE1heC4gV2VydFxyXG4gICAgICogQHBhcmFtIGZpZWxkTmFtZSBMYWJlbCBkZXMgQ29udHJvbHNcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSBpbSBWYWxpZGF0aW9uIFN1bW1hcnkgYW5nZXplaWd0IHdpcmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhWYWx1ZShtYXh2YWx1ZTogbnVtYmVyLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG1heFZhbHVlVmFsaWRhdG9yKG1heHZhbHVlLCB2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkaWVydCBvYiBkYXMgRGF0dW0gbmV1ZXIgYWxzIG1pbkRhdGUgaXN0XHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGRhcyBWYWxpZGllcnQgd2VyZGVuIHNvbGwuIE11c3MgSURhdGVUaW1lQ29udHJvbCBpbXBsZW1lbnRpZXJ0IGhhYmVuXHJcbiAgICAgKiBAcGFyYW0gbWluRGF0ZSBNaW4uIERhdHVtXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG1pbkRhdGUobWluRGF0ZTogRGF0ZSwgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZywgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiBtaW5EYXRlVmFsaWRhdG9yKG1pbkRhdGUsIHZhbGlkYXRpb25NZXNzYWdlLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yIGbDvHIgbWluLiBBbnphaGwgdm9uIFVwbG9hZHNcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkYXRpZXJ0IHdlcmRlbiBzb2xsLiBDb250cm9sIG11c3MgSVVwbG9hZENvbnRyb2wgaW1wbGVtZW50aWVydCBoYWJlblxyXG4gICAgICogQHBhcmFtIG1pbkZpbGVzIE1pbi4gQW56YWhsIEZpbGVzIGRpZSBob2NoZ2VsYWRlbiB3ZXJkZW4gbcO8c3NlblxyXG4gICAgICogQHBhcmFtIGZpZWxkTmFtZSBMYWJlbCBkZXMgQ29udHJvbHNcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSB1bnRlcmhhbGIgZGVzIENvbnRyb2xzIGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG1pbkZpbGVzKG1pbkZpbGVzOiBudW1iZXIsIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gbWluRmlsZXNWYWxpZGF0b3IobWluRmlsZXMsIHZhbGlkYXRpb25NZXNzYWdlLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRpZXJ0IGF1ZiBkaWUgTMOkbmdlIGRlcyBXZXJ0ZXMgaW0gQ29udHJvbFxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgVmFsaWRpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICAgKiBAcGFyYW0gbWludGV4dGxlbmd0aCBNaW4uIEzDpG5nZSBkZXMgV2VydGVzXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG1pblRleHRMZW5ndGgobWludGV4dGxlbmd0aDogbnVtYmVyLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG1pblRleHRMZW5ndGhWYWxpZGF0b3IobWludGV4dGxlbmd0aCwgdmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnQgb2IgZGllIFplaXQgc3DDpHRlciBhbHMgbWluVGltZSBpc3QuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGRhcyBWYWxpZGllcnQgd2VyZGVuIHNvbGwuIE11c3MgSURhdGVUaW1lQ29udHJvbCBpbXBsZW1lbnRpZXJ0IGhhYmVuXHJcbiAgICAgKiBAcGFyYW0gbWluVGltZSBNaW4uIFplaXRcclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWVcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbWluVGltZShtaW5UaW1lOiBEYXRlLCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnk6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gbWluVGltZVZhbGlkYXRvcihtaW5UaW1lLCB2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBkZXIgcHLDvGZ0IG9iIGRlciBXZXJ0IGVpbiBEYXR1bSBpc3QuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIG1pdCBJRGF0ZVRpbWVDb250cm9sIEludGVyZmFjZSBpbXBsZW1lbnRpZXJ1bmdcclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgTGFiZWwgZGVzIENvbnRyb2xzXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2UgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWVcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbWluVmFsdWUobWludmFsdWU6IG51bWJlciwgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZywgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiBtaW5WYWx1ZVZhbGlkYXRvcihtaW52YWx1ZSwgdmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnVuZyBtaXQgZWluZW0gUmVnRXggUGF0dGVyblxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgdmFsaWRpZXJ0IHdlcmRlbiBzb2xsLlxyXG4gICAgICogQHBhcmFtIHBhdHRlcm4gUmVnRXggUGF0dGVyblxyXG4gICAgICogQHBhcmFtIGZpZWxkTmFtZSBMYWJlbCBkZXMgQ29udHJvbHNcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSB1bnRlcmhhbGIgZGVzIENvbnRyb2xzIGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG11bHRpbGFuZ3VhZ2VSZXF1aXJlZChcclxuICAgICAgICBsYW5ndWFnZXM6IExhbmd1YWdlTW9kZWxbXSxcclxuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLFxyXG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeVxyXG4gICAgKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiBtdWx0aWxhbmd1YWdlUmVxdWlyZWRWYWxpZGF0b3IobGFuZ3VhZ2VzLCB2YWxpZGF0aW9uTWVzc2FnZSwgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBmw7xyIE11bHRpTGFuZ3VhZ2UgQ29udHJvbCwgd2VsY2hlciDDvGJlcnByw7xmdCBvYiBtaW4uIGVpbiBXZXJ0IGVyZmFzc3Qgd3VyZGVcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkYXRpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICAgKiBAcGFyYW0gbGFuZ3VhZ2VzIFNwcmFjaGVuIGRpZSBpbSBDb250cm9sIGVyZmFzc3Qgd2VyZGVuIGvDtm5uZW4uXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllIHVudGVyaGFsYiBkZXMgQ29udHJvbHMgYW5nZXplaWd0IHdpcmRcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkgVmFsaWRpZXJ1bmdzbWVsZHVuZyBkaWUgaW0gVmFsaWRhdGlvbiBTdW1tYXJ5IGFuZ2V6ZWlndCB3aXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55KFxyXG4gICAgICAgIGxhbmd1YWdlczogTGFuZ3VhZ2VNb2RlbFtdLFxyXG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsXHJcbiAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5XHJcbiAgICApOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG11bHRpbGFuZ3VhZ2VSZXF1aXJlZEFueVZhbGlkYXRvcihsYW5ndWFnZXMsIHZhbGlkYXRpb25NZXNzYWdlLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yIHZhbGlkYXRlIGlmIHZhbHVlIGlzIG5vdCB0aGUgaW52YWxpZFZhbHVlXHJcbiAgICAgKiBAcGFyYW0gaW52YWxpZFZhbHVlIFZhbHVlIHRoYXQgY29udHJvbCBkb2Vzbid0IHNob3VsZCBoYXZlXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIHRvIGJlIHZhbGlkYXRlXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIG9mIGNvbnRyb2xcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSB2YWxpZGF0aW9uIG1lc3NhZ2UgbmVhciB0aGUgY29udHJvbFxyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSB2YWxpZGF0aW9uIGluc2lkZSB0aGUgdmFsaWRhdGlvbiBzdW1tYXJ5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgbm90ZXF1YWxzKGludmFsaWRWYWx1ZTogYW55LCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIG5vdEVxdWFsc1ZhbHVlVmFsaWRhdG9yKGludmFsaWRWYWx1ZSwgdmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGllcnVuZyBtaXQgZWluZW0gUmVnRXggUGF0dGVyblxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBkYXMgdmFsaWRpZXJ0IHdlcmRlbiBzb2xsLlxyXG4gICAgICogQHBhcmFtIHBhdHRlcm4gUmVnRXggUGF0dGVyblxyXG4gICAgICogQHBhcmFtIGZpZWxkTmFtZSBMYWJlbCBkZXMgQ29udHJvbHNcclxuICAgICAqIEBwYXJhbSB2YWxpZGF0aW9uTWVzc2FnZSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZVxyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSBWYWxpZGllcnVuZ3NtZWxkdW5nIGRpZSBpbSBWYWxpZGF0aW9uIFN1bW1hcnkgYW5nZXplaWd0IHdpcmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBwYXR0ZXJuKHBhdHRlcm46IHN0cmluZywgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZywgdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiBwYXR0ZXJuVmFsaWRhdG9yKHBhdHRlcm4sIHZhbGlkYXRpb25NZXNzYWdlLCB2YWxpZGF0aW9uTWVzc2FnZVN1bW1hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yIGbDvHIgUmVxdWlyZWQgU3RhdGVcclxuICAgICAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZGFzIFZhbGlkaWVydCB3aXJkXHJcbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIExhYmVsIGRlcyBDb250cm9sc1xyXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25NZXNzYWdlIFZhbGlkaWVydW5nc21lbGR1bmcgZGllXHJcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGlvbk1lc3NhZ2VTdW1tYXJ5IFZhbGlkaWVydW5nc21lbGR1bmcgZGllIGltIFZhbGlkYXRpb24gU3VtbWFyeSBhbmdlemVpZ3Qgd2lyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHJlcXVpcmVkKHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gcmVxdWlyZWRWYWxpZGF0b3IodmFsaWRhdGlvbk1lc3NhZ2UsIHZhbGlkYXRpb25NZXNzYWdlU3VtbWFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgU3RhdGljIE1ldGhvZHNcclxufVxyXG5cclxuLy8gI2VuZHJlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXHJcbiJdLCJtYXBwaW5ncyI6IjJvcEJBZ0JTO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQWZULE9BQVNFLGNBQWMsS0FBUSxtQkFBbUIsQ0FDbEQsT0FBU0Msb0JBQW9CLEtBQVEsb0JBQW9CLENBQ3pELE9BQVNDLG9CQUFvQixLQUFRLHlCQUF5QixDQUM5RCxPQUFTQyxnQkFBZ0IsS0FBUSxxQkFBcUIsQ0FDdEQsT0FBU0MsZ0JBQWdCLEtBQVEscUJBQXFCLENBQ3RELE9BQVNDLGlCQUFpQixLQUFRLHNCQUFzQixDQUN4RCxPQUFTQyxnQkFBZ0IsS0FBUSxxQkFBcUIsQ0FDdEQsT0FBU0MsaUJBQWlCLEtBQVEsc0JBQXNCLENBQ3hELE9BQVNDLHNCQUFzQixLQUFRLDJCQUEyQixDQUNsRSxPQUFTQyxnQkFBZ0IsS0FBUSxxQkFBcUIsQ0FDdEQsT0FBU0MsaUJBQWlCLEtBQVEsc0JBQXNCLENBQ3hELE9BQVNDLDhCQUE4QixLQUFRLG1DQUFtQyxDQUNsRixPQUFTQyxpQ0FBaUMsS0FBUSxzQ0FBc0MsQ0FDeEYsT0FBU0MsdUJBQXVCLEtBQVEsdUJBQXVCLENBQy9ELE9BQVNDLGdCQUFnQixLQUFRLHFCQUFxQixDQUN0RCxPQUFTQyxpQkFBaUIsS0FBUSxzQkFBc0IsQ0FDeEQsT0FBU0MscUJBQXFCLEtBQVEsMEJBQTBCLENBRWhFLE1BQU8sR0FBSyxDQUFBQyxPQUFPLEtBQU0sUUFBUSxDQUVqQztBQUVBOztHQUdBLEtBQU0sQ0FBQUMsTUFBTSxFQUFBcEIsY0FBQSxHQUFBcUIsQ0FB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
|