payload 2.12.1 → 2.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/database.d.ts +1 -1
- package/database.js +10 -1
- package/dist/admin/components/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DeleteDocument/index.js +1 -1
- package/dist/admin/components/elements/DocumentControls/index.js +2 -2
- package/dist/admin/components/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DuplicateDocument/index.js +8 -3
- package/dist/admin/components/elements/EditMany/index.js +4 -4
- package/dist/admin/components/elements/Popup/PopupButtonList/index.d.ts +1 -0
- package/dist/admin/components/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
- package/dist/admin/components/elements/Popup/PopupButtonList/index.js +3 -2
- package/dist/admin/components/elements/Publish/index.d.ts +6 -2
- package/dist/admin/components/elements/Publish/index.d.ts.map +1 -1
- package/dist/admin/components/elements/Publish/index.js +1 -1
- package/dist/admin/components/elements/WhereBuilder/field-types.d.ts +3 -12
- package/dist/admin/components/elements/WhereBuilder/field-types.d.ts.map +1 -1
- package/dist/admin/components/elements/WhereBuilder/field-types.js +19 -13
- package/dist/admin/components/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/admin/components/elements/WhereBuilder/index.js +38 -33
- package/dist/admin/components/elements/types.d.ts +1 -1
- package/dist/admin/components/elements/types.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Collapsible/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Collapsible/index.js +29 -23
- package/dist/admin/components/forms/field-types/JSON/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/JSON/index.js +21 -2
- package/dist/admin/components/forms/field-types/Number/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Number/index.js +3 -1
- package/dist/admin/components/forms/field-types/RichText/types.d.ts +3 -1
- package/dist/admin/components/forms/field-types/RichText/types.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Tabs/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Tabs/index.js +28 -24
- package/dist/admin/components/views/collections/Edit/Default.js +3 -3
- package/dist/admin/utilities/formatDate/getSupportedDateLocale.d.ts.map +1 -1
- package/dist/admin/utilities/formatDate/getSupportedDateLocale.js +27 -2
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js +17 -1
- package/dist/collections/buildEndpoints.d.ts.map +1 -1
- package/dist/collections/buildEndpoints.js +6 -1
- package/dist/collections/config/schema.d.ts.map +1 -1
- package/dist/collections/config/schema.js +4 -2
- package/dist/collections/config/types.d.ts +10 -3
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js +1 -1
- package/dist/collections/graphql/init.d.ts.map +1 -1
- package/dist/collections/graphql/init.js +99 -74
- package/dist/collections/graphql/resolvers/count.d.ts +15 -0
- package/dist/collections/graphql/resolvers/count.d.ts.map +1 -0
- package/dist/collections/graphql/resolvers/count.js +37 -0
- package/dist/collections/operations/count.d.ts +14 -0
- package/dist/collections/operations/count.d.ts.map +1 -0
- package/dist/collections/operations/count.js +91 -0
- package/dist/collections/operations/local/count.d.ts +21 -0
- package/dist/collections/operations/local/count.d.ts.map +1 -0
- package/dist/collections/operations/local/count.js +35 -0
- package/dist/collections/operations/local/index.d.ts +2 -0
- package/dist/collections/operations/local/index.d.ts.map +1 -1
- package/dist/collections/operations/local/index.js +3 -1
- package/dist/collections/operations/update.js +3 -4
- package/dist/collections/operations/updateByID.js +3 -3
- package/dist/collections/operations/utils.d.ts +6 -0
- package/dist/collections/operations/utils.d.ts.map +1 -1
- package/dist/collections/operations/utils.js +1 -1
- package/dist/collections/requestHandlers/count.d.ts +6 -0
- package/dist/collections/requestHandlers/count.d.ts.map +1 -0
- package/dist/collections/requestHandlers/count.js +31 -0
- package/dist/collections/requestHandlers/deleteByID.d.ts.map +1 -1
- package/dist/collections/requestHandlers/deleteByID.js +8 -2
- package/dist/collections/requestHandlers/findByID.d.ts.map +1 -1
- package/dist/collections/requestHandlers/findByID.js +8 -2
- package/dist/collections/requestHandlers/findVersionByID.d.ts.map +1 -1
- package/dist/collections/requestHandlers/findVersionByID.js +8 -2
- package/dist/collections/requestHandlers/restoreVersion.d.ts.map +1 -1
- package/dist/collections/requestHandlers/restoreVersion.js +8 -2
- package/dist/collections/requestHandlers/updateByID.d.ts.map +1 -1
- package/dist/collections/requestHandlers/updateByID.js +8 -2
- package/dist/database/types.d.ts +14 -0
- package/dist/database/types.d.ts.map +1 -1
- package/dist/errors/FileRetrievalError.d.ts +7 -0
- package/dist/errors/FileRetrievalError.d.ts.map +1 -0
- package/dist/errors/FileRetrievalError.js +29 -0
- package/dist/errors/MissingEditorProps.d.ts +7 -0
- package/dist/errors/MissingEditorProps.d.ts.map +1 -0
- package/dist/errors/MissingEditorProps.js +25 -0
- package/dist/exports/database.d.ts +1 -1
- package/dist/exports/database.d.ts.map +1 -1
- package/dist/exports/database.js +10 -1
- package/dist/exports/types.d.ts +2 -2
- package/dist/exports/types.d.ts.map +1 -1
- package/dist/exports/types.js +1 -1
- package/dist/fields/config/sanitize.d.ts +7 -1
- package/dist/fields/config/sanitize.d.ts.map +1 -1
- package/dist/fields/config/sanitize.js +16 -8
- package/dist/fields/config/schema.d.ts.map +1 -1
- package/dist/fields/config/schema.js +8 -2
- package/dist/fields/config/types.d.ts +31 -1
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js +1 -1
- package/dist/fields/validations.d.ts +1 -0
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +43 -2
- package/dist/globals/config/schema.d.ts.map +1 -1
- package/dist/globals/config/schema.js +3 -2
- package/dist/globals/config/types.d.ts +8 -4
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/payload.d.ts +9 -0
- package/dist/payload.d.ts.map +1 -1
- package/dist/payload.js +9 -1
- package/dist/translations/ar.json +5 -1
- package/dist/translations/az.json +5 -2
- package/dist/translations/bg.json +5 -1
- package/dist/translations/cs.json +5 -1
- package/dist/translations/de.json +5 -1
- package/dist/translations/en.json +2 -0
- package/dist/translations/es.json +5 -1
- package/dist/translations/fa.json +5 -1
- package/dist/translations/fr.json +5 -1
- package/dist/translations/hr.json +5 -1
- package/dist/translations/hu.json +5 -1
- package/dist/translations/index.d.ts +116 -1
- package/dist/translations/index.d.ts.map +1 -1
- package/dist/translations/it.json +5 -1
- package/dist/translations/ja.json +5 -1
- package/dist/translations/ko.json +4 -0
- package/dist/translations/my.json +5 -1
- package/dist/translations/nb.json +5 -1
- package/dist/translations/nl.json +5 -1
- package/dist/translations/pl.json +4 -0
- package/dist/translations/pt.json +5 -1
- package/dist/translations/ro.json +5 -1
- package/dist/translations/rs-latin.json +4 -0
- package/dist/translations/rs.json +4 -0
- package/dist/translations/ru.json +5 -1
- package/dist/translations/sv.json +5 -1
- package/dist/translations/th.json +5 -1
- package/dist/translations/tr.json +5 -1
- package/dist/translations/translation-schema.json +8 -0
- package/dist/translations/ua.json +6 -2
- package/dist/translations/vi.json +5 -1
- package/dist/translations/zh-tw.json +6 -4
- package/dist/translations/zh.json +4 -0
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +8 -4
- package/dist/uploads/getExternalFile.d.ts +3 -2
- package/dist/uploads/getExternalFile.d.ts.map +1 -1
- package/dist/uploads/getExternalFile.js +16 -5
- package/dist/uploads/types.d.ts +6 -0
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js +1 -1
- package/dist/utilities/configToJSONSchema.d.ts +1 -1
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +9 -8
- package/dist/utilities/createLocalReq.d.ts.map +1 -1
- package/dist/utilities/createLocalReq.js +9 -2
- package/dist/utilities/sanitizeCollectionID.d.ts +9 -0
- package/dist/utilities/sanitizeCollectionID.d.ts.map +1 -0
- package/dist/utilities/sanitizeCollectionID.js +30 -0
- package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
- package/dist/versions/getLatestCollectionVersion.js +3 -1
- package/dist/versions/getVersionsModelName.d.ts +5 -0
- package/dist/versions/getVersionsModelName.d.ts.map +1 -1
- package/dist/versions/getVersionsModelName.js +1 -1
- package/dist/versions/saveVersion.js +2 -2
- package/package.json +1 -1
- package/types.d.ts +2 -2
- package/types.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAgBpC,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC;;;OAGG;IACH,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,iGAMxB,IAAI,KAAG,KAAK,EAoKd,CAAA"}
|
|
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "sanitizeFields", {
|
|
|
10
10
|
});
|
|
11
11
|
const _withCondition = /*#__PURE__*/ _interop_require_default(require("../../admin/components/forms/withCondition"));
|
|
12
12
|
const _errors = require("../../errors");
|
|
13
|
+
const _MissingEditorProps = /*#__PURE__*/ _interop_require_default(require("../../errors/MissingEditorProps"));
|
|
13
14
|
const _formatLabels = require("../../utilities/formatLabels");
|
|
14
15
|
const _baseBlockFields = require("../baseFields/baseBlockFields");
|
|
15
16
|
const _baseIDField = require("../baseFields/baseIDField");
|
|
@@ -20,7 +21,7 @@ function _interop_require_default(obj) {
|
|
|
20
21
|
default: obj
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
|
-
const sanitizeFields = ({ config, existingFieldNames = new Set(), fields, validRelationships })=>{
|
|
24
|
+
const sanitizeFields = ({ config, existingFieldNames = new Set(), fields, requireFieldLevelRichTextEditor = false, validRelationships })=>{
|
|
24
25
|
if (!fields) return [];
|
|
25
26
|
return fields.map((unsanitizedField)=>{
|
|
26
27
|
const field = {
|
|
@@ -32,8 +33,12 @@ const sanitizeFields = ({ config, existingFieldNames = new Set(), fields, validR
|
|
|
32
33
|
throw new _errors.InvalidFieldName(field, field.name);
|
|
33
34
|
}
|
|
34
35
|
// Make sure that the richText field has an editor
|
|
35
|
-
if (field.type === 'richText' && !field.editor
|
|
36
|
-
|
|
36
|
+
if (field.type === 'richText' && !field.editor) {
|
|
37
|
+
if (config.editor && !requireFieldLevelRichTextEditor) {
|
|
38
|
+
field.editor = config.editor;
|
|
39
|
+
} else {
|
|
40
|
+
throw new _MissingEditorProps.default(field);
|
|
41
|
+
}
|
|
37
42
|
}
|
|
38
43
|
// Auto-label
|
|
39
44
|
if ('name' in field && field.name && typeof field.label !== 'object' && typeof field.label !== 'string' && field.label !== false) {
|
|
@@ -80,8 +85,8 @@ const sanitizeFields = ({ config, existingFieldNames = new Set(), fields, validR
|
|
|
80
85
|
if (existingFieldNames.has(field.name)) {
|
|
81
86
|
throw new _errors.DuplicateFieldName(field.name);
|
|
82
87
|
} else if (![
|
|
83
|
-
'
|
|
84
|
-
'
|
|
88
|
+
'blockName',
|
|
89
|
+
'id'
|
|
85
90
|
].includes(field.name)) {
|
|
86
91
|
existingFieldNames.add(field.name);
|
|
87
92
|
}
|
|
@@ -112,6 +117,7 @@ const sanitizeFields = ({ config, existingFieldNames = new Set(), fields, validR
|
|
|
112
117
|
config,
|
|
113
118
|
existingFieldNames: (0, _types.fieldAffectsData)(field) ? new Set() : existingFieldNames,
|
|
114
119
|
fields: field.fields,
|
|
120
|
+
requireFieldLevelRichTextEditor,
|
|
115
121
|
validRelationships
|
|
116
122
|
});
|
|
117
123
|
}
|
|
@@ -127,6 +133,7 @@ const sanitizeFields = ({ config, existingFieldNames = new Set(), fields, validR
|
|
|
127
133
|
config,
|
|
128
134
|
existingFieldNames: (0, _types.tabHasName)(tab) ? new Set() : existingFieldNames,
|
|
129
135
|
fields: tab.fields,
|
|
136
|
+
requireFieldLevelRichTextEditor,
|
|
130
137
|
validRelationships
|
|
131
138
|
});
|
|
132
139
|
return unsanitizedTab;
|
|
@@ -140,9 +147,10 @@ const sanitizeFields = ({ config, existingFieldNames = new Set(), fields, validR
|
|
|
140
147
|
unsanitizedBlock.labels = !unsanitizedBlock.labels ? (0, _formatLabels.formatLabels)(unsanitizedBlock.slug) : unsanitizedBlock.labels;
|
|
141
148
|
unsanitizedBlock.fields = sanitizeFields({
|
|
142
149
|
config,
|
|
150
|
+
existingFieldNames: new Set(),
|
|
143
151
|
fields: block.fields,
|
|
144
|
-
|
|
145
|
-
|
|
152
|
+
requireFieldLevelRichTextEditor,
|
|
153
|
+
validRelationships
|
|
146
154
|
});
|
|
147
155
|
return unsanitizedBlock;
|
|
148
156
|
});
|
|
@@ -151,4 +159,4 @@ const sanitizeFields = ({ config, existingFieldNames = new Set(), fields, validR
|
|
|
151
159
|
});
|
|
152
160
|
};
|
|
153
161
|
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3Nhbml0aXplLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB3aXRoQ29uZGl0aW9uIGZyb20gJy4uLy4uL2FkbWluL2NvbXBvbmVudHMvZm9ybXMvd2l0aENvbmRpdGlvbidcbmltcG9ydCB7XG4gIER1cGxpY2F0ZUZpZWxkTmFtZSxcbiAgSW52YWxpZEZpZWxkTmFtZSxcbiAgSW52YWxpZEZpZWxkUmVsYXRpb25zaGlwLFxuICBNaXNzaW5nRmllbGRUeXBlLFxufSBmcm9tICcuLi8uLi9lcnJvcnMnXG5pbXBvcnQgeyBmb3JtYXRMYWJlbHMsIHRvV29yZHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZm9ybWF0TGFiZWxzJ1xuaW1wb3J0IHsgYmFzZUJsb2NrRmllbGRzIH0gZnJvbSAnLi4vYmFzZUZpZWxkcy9iYXNlQmxvY2tGaWVsZHMnXG5pbXBvcnQgeyBiYXNlSURGaWVsZCB9IGZyb20gJy4uL2Jhc2VGaWVsZHMvYmFzZUlERmllbGQnXG5pbXBvcnQgdmFsaWRhdGlvbnMgZnJvbSAnLi4vdmFsaWRhdGlvbnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBBcmdzID0ge1xuICBjb25maWc6IENvbmZpZ1xuICBleGlzdGluZ0ZpZWxkTmFtZXM/OiBTZXQ8c3RyaW5nPlxuICBmaWVsZHM6IEZpZWxkW11cbiAgLyoqXG4gICAqIElmIG5vdCBudWxsLCB3aWxsIHZhbGlkYXRlIHRoYXQgdXBsb2FkIGFuZCByZWxhdGlvbnNoaXAgZmllbGRzIGRvIG5vdCByZWxhdGUgdG8gYSBjb2xsZWN0aW9uIHRoYXQgaXMgbm90IGluIHRoaXMgYXJyYXkuXG4gICAqIFRoaXMgdmFsaWRhdGlvbiB3aWxsIGJlIHNraXBwZWQgaWYgdmFsaWRSZWxhdGlvbnNoaXBzIGlzIG51bGwuXG4gICAqL1xuICB2YWxpZFJlbGF0aW9uc2hpcHM6IG51bGwgfCBzdHJpbmdbXVxufVxuXG5leHBvcnQgY29uc3Qgc2FuaXRpemVGaWVsZHMgPSAoe1xuICBjb25maWcsXG4gIGV4aXN0aW5nRmllbGROYW1lcyA9IG5ldyBTZXQoKSxcbiAgZmllbGRzLFxuICB2YWxpZFJlbGF0aW9uc2hpcHMsXG59OiBBcmdzKTogRmllbGRbXSA9PiB7XG4gIGlmICghZmllbGRzKSByZXR1cm4gW11cblxuICByZXR1cm4gZmllbGRzLm1hcCgodW5zYW5pdGl6ZWRGaWVsZCkgPT4ge1xuICAgIGNvbnN0IGZpZWxkOiBGaWVsZCA9IHsgLi4udW5zYW5pdGl6ZWRGaWVsZCB9XG5cbiAgICBpZiAoIWZpZWxkLnR5cGUpIHRocm93IG5ldyBNaXNzaW5nRmllbGRUeXBlKGZpZWxkKVxuXG4gICAgLy8gYXNzZXJ0IHRoYXQgZmllbGQgbmFtZXMgZG8gbm90IGNvbnRhaW4gZm9yYmlkZGVuIGNoYXJhY3RlcnNcbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEZpZWxkTmFtZShmaWVsZCwgZmllbGQubmFtZSlcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcmljaFRleHQgZmllbGQgaGFzIGFuIGVkaXRvclxuICAgIGlmIChmaWVsZC50eXBlID09PSAncmljaFRleHQnICYmICFmaWVsZC5lZGl0b3IgJiYgY29uZmlnLmVkaXRvcikge1xuICAgICAgZmllbGQuZWRpdG9yID0gY29uZmlnLmVkaXRvclxuICAgIH1cblxuICAgIC8vIEF1dG8tbGFiZWxcbiAgICBpZiAoXG4gICAgICAnbmFtZScgaW4gZmllbGQgJiZcbiAgICAgIGZpZWxkLm5hbWUgJiZcbiAgICAgIHR5cGVvZiBmaWVsZC5sYWJlbCAhPT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBmaWVsZC5sYWJlbCAhPT0gJ3N0cmluZycgJiZcbiAgICAgIGZpZWxkLmxhYmVsICE9PSBmYWxzZVxuICAgICkge1xuICAgICAgZmllbGQubGFiZWwgPSB0b1dvcmRzKGZpZWxkLm5hbWUpXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZmllbGQudHlwZSA9PT0gJ2NoZWNrYm94JyAmJlxuICAgICAgdHlwZW9mIGZpZWxkLmRlZmF1bHRWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIGZpZWxkLnJlcXVpcmVkID09PSB0cnVlXG4gICAgKSB7XG4gICAgICBmaWVsZC5kZWZhdWx0VmFsdWUgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBmaWVsZC50eXBlID09PSAndXBsb2FkJykge1xuICAgICAgaWYgKHZhbGlkUmVsYXRpb25zaGlwcykge1xuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKVxuICAgICAgICAgID8gZmllbGQucmVsYXRpb25Ub1xuICAgICAgICAgIDogW2ZpZWxkLnJlbGF0aW9uVG9dXG4gICAgICAgIHJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb25zaGlwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAoIXZhbGlkUmVsYXRpb25zaGlwcy5pbmNsdWRlcyhyZWxhdGlvbnNoaXApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEZpZWxkUmVsYXRpb25zaGlwKGZpZWxkLCByZWxhdGlvbnNoaXApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcpIHtcbiAgICAgICAgaWYgKGZpZWxkLm1pbiAmJiAhZmllbGQubWluUm93cykge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGAocGF5bG9hZCk6IFRoZSBcIm1pblwiIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgZm9yIHRoZSBSZWxhdGlvbnNoaXAgZmllbGQgXCIke2ZpZWxkLm5hbWV9XCIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBQbGVhc2UgdXNlIFwibWluUm93c1wiIGluc3RlYWQuYCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLm1heCAmJiAhZmllbGQubWF4Um93cykge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGAocGF5bG9hZCk6IFRoZSBcIm1heFwiIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgZm9yIHRoZSBSZWxhdGlvbnNoaXAgZmllbGQgXCIke2ZpZWxkLm5hbWV9XCIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBQbGVhc2UgdXNlIFwibWF4Um93c1wiIGluc3RlYWQuYCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgZmllbGQubWluUm93cyA9IGZpZWxkLm1pblJvd3MgfHwgZmllbGQubWluXG4gICAgICAgIGZpZWxkLm1heFJvd3MgPSBmaWVsZC5tYXhSb3dzIHx8IGZpZWxkLm1heFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAnYmxvY2tzJyAmJiBmaWVsZC5ibG9ja3MpIHtcbiAgICAgIGZpZWxkLmJsb2NrcyA9IGZpZWxkLmJsb2Nrcy5tYXAoKGJsb2NrKSA9PiAoe1xuICAgICAgICAuLi5ibG9jayxcbiAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMuY29uY2F0KGJhc2VCbG9ja0ZpZWxkcyksXG4gICAgICB9KSlcbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2FycmF5JyAmJiBmaWVsZC5maWVsZHMpIHtcbiAgICAgIGZpZWxkLmZpZWxkcy5wdXNoKGJhc2VJREZpZWxkKVxuICAgIH1cblxuICAgIGlmICgoZmllbGQudHlwZSA9PT0gJ2Jsb2NrcycgfHwgZmllbGQudHlwZSA9PT0gJ2FycmF5JykgJiYgZmllbGQubGFiZWwpIHtcbiAgICAgIGZpZWxkLmxhYmVscyA9IGZpZWxkLmxhYmVscyB8fCBmb3JtYXRMYWJlbHMoZmllbGQubmFtZSlcbiAgICB9XG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgIGlmIChleGlzdGluZ0ZpZWxkTmFtZXMuaGFzKGZpZWxkLm5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVGaWVsZE5hbWUoZmllbGQubmFtZSlcbiAgICAgIH0gZWxzZSBpZiAoIVsnaWQnLCAnYmxvY2tOYW1lJ10uaW5jbHVkZXMoZmllbGQubmFtZSkpIHtcbiAgICAgICAgZXhpc3RpbmdGaWVsZE5hbWVzLmFkZChmaWVsZC5uYW1lKVxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmICFjb25maWcubG9jYWxpemF0aW9uKSBkZWxldGUgZmllbGQubG9jYWxpemVkXG5cbiAgICAgIGlmICh0eXBlb2YgZmllbGQudmFsaWRhdGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWxpZGF0ZSA9IHZhbGlkYXRpb25zW2ZpZWxkLnR5cGVdXG4gICAgICAgIGlmIChkZWZhdWx0VmFsaWRhdGUpIHtcbiAgICAgICAgICBmaWVsZC52YWxpZGF0ZSA9ICh2YWwsIG9wdGlvbnMpID0+IGRlZmF1bHRWYWxpZGF0ZSh2YWwsIHsgLi4uZmllbGQsIC4uLm9wdGlvbnMgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZC52YWxpZGF0ZSA9ICgpID0+IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWZpZWxkLmhvb2tzKSBmaWVsZC5ob29rcyA9IHt9XG4gICAgICBpZiAoIWZpZWxkLmFjY2VzcykgZmllbGQuYWNjZXNzID0ge31cbiAgICB9XG5cbiAgICBpZiAoZmllbGQuYWRtaW4pIHtcbiAgICAgIGlmIChmaWVsZC5hZG1pbi5jb25kaXRpb24gJiYgZmllbGQuYWRtaW4uY29tcG9uZW50cz8uRmllbGQpIHtcbiAgICAgICAgZmllbGQuYWRtaW4uY29tcG9uZW50cy5GaWVsZCA9IHdpdGhDb25kaXRpb24oZmllbGQuYWRtaW4uY29tcG9uZW50cz8uRmllbGQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkLmFkbWluID0ge31cbiAgICB9XG5cbiAgICBpZiAoJ2ZpZWxkcycgaW4gZmllbGQgJiYgZmllbGQuZmllbGRzKSB7XG4gICAgICBmaWVsZC5maWVsZHMgPSBzYW5pdGl6ZUZpZWxkcyh7XG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgZXhpc3RpbmdGaWVsZE5hbWVzOiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSA/IG5ldyBTZXQoKSA6IGV4aXN0aW5nRmllbGROYW1lcyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwcyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0YWJzJykge1xuICAgICAgZmllbGQudGFicyA9IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+IHtcbiAgICAgICAgY29uc3QgdW5zYW5pdGl6ZWRUYWIgPSB7IC4uLnRhYiB9XG4gICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikgJiYgdHlwZW9mIHRhYi5sYWJlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB1bnNhbml0aXplZFRhYi5sYWJlbCA9IHRvV29yZHModGFiLm5hbWUpXG4gICAgICAgIH1cblxuICAgICAgICB1bnNhbml0aXplZFRhYi5maWVsZHMgPSBzYW5pdGl6ZUZpZWxkcyh7XG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGV4aXN0aW5nRmllbGROYW1lczogdGFiSGFzTmFtZSh0YWIpID8gbmV3IFNldCgpIDogZXhpc3RpbmdGaWVsZE5hbWVzLFxuICAgICAgICAgIGZpZWxkczogdGFiLmZpZWxkcyxcbiAgICAgICAgICB2YWxpZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHVuc2FuaXRpemVkVGFiXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICgnYmxvY2tzJyBpbiBmaWVsZCAmJiBmaWVsZC5ibG9ja3MpIHtcbiAgICAgIGZpZWxkLmJsb2NrcyA9IGZpZWxkLmJsb2Nrcy5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICAgIGNvbnN0IHVuc2FuaXRpemVkQmxvY2sgPSB7IC4uLmJsb2NrIH1cbiAgICAgICAgdW5zYW5pdGl6ZWRCbG9jay5sYWJlbHMgPSAhdW5zYW5pdGl6ZWRCbG9jay5sYWJlbHNcbiAgICAgICAgICA/IGZvcm1hdExhYmVscyh1bnNhbml0aXplZEJsb2NrLnNsdWcpXG4gICAgICAgICAgOiB1bnNhbml0aXplZEJsb2NrLmxhYmVsc1xuXG4gICAgICAgIHVuc2FuaXRpemVkQmxvY2suZmllbGRzID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICB2YWxpZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgZXhpc3RpbmdGaWVsZE5hbWVzOiBuZXcgU2V0KCksXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHVuc2FuaXRpemVkQmxvY2tcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkXG4gIH0pXG59XG4iXSwibmFtZXMiOlsic2FuaXRpemVGaWVsZHMiLCJjb25maWciLCJleGlzdGluZ0ZpZWxkTmFtZXMiLCJTZXQiLCJmaWVsZHMiLCJ2YWxpZFJlbGF0aW9uc2hpcHMiLCJtYXAiLCJ1bnNhbml0aXplZEZpZWxkIiwiZmllbGQiLCJ0eXBlIiwiTWlzc2luZ0ZpZWxkVHlwZSIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwiaW5jbHVkZXMiLCJJbnZhbGlkRmllbGROYW1lIiwiZWRpdG9yIiwibGFiZWwiLCJ0b1dvcmRzIiwiZGVmYXVsdFZhbHVlIiwicmVxdWlyZWQiLCJyZWxhdGlvbnNoaXBzIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsImZvckVhY2giLCJyZWxhdGlvbnNoaXAiLCJJbnZhbGlkRmllbGRSZWxhdGlvbnNoaXAiLCJtaW4iLCJtaW5Sb3dzIiwiY29uc29sZSIsIndhcm4iLCJtYXgiLCJtYXhSb3dzIiwiYmxvY2tzIiwiYmxvY2siLCJjb25jYXQiLCJiYXNlQmxvY2tGaWVsZHMiLCJwdXNoIiwiYmFzZUlERmllbGQiLCJsYWJlbHMiLCJmb3JtYXRMYWJlbHMiLCJoYXMiLCJEdXBsaWNhdGVGaWVsZE5hbWUiLCJhZGQiLCJsb2NhbGl6ZWQiLCJsb2NhbGl6YXRpb24iLCJ2YWxpZGF0ZSIsImRlZmF1bHRWYWxpZGF0ZSIsInZhbGlkYXRpb25zIiwidmFsIiwib3B0aW9ucyIsImhvb2tzIiwiYWNjZXNzIiwiYWRtaW4iLCJjb25kaXRpb24iLCJjb21wb25lbnRzIiwiRmllbGQiLCJ3aXRoQ29uZGl0aW9uIiwidGFicyIsInRhYiIsInVuc2FuaXRpemVkVGFiIiwidGFiSGFzTmFtZSIsInVuc2FuaXRpemVkQmxvY2siLCJzbHVnIl0sIm1hcHBpbmdzIjoiOzs7OytCQTJCYUE7OztlQUFBQTs7O3NFQXhCYTt3QkFNbkI7OEJBQytCO2lDQUNOOzZCQUNKO29FQUNKO3VCQUNxQjs7Ozs7O0FBYXRDLE1BQU1BLGlCQUFpQixDQUFDLEVBQzdCQyxNQUFNLEVBQ05DLHFCQUFxQixJQUFJQyxLQUFLLEVBQzlCQyxNQUFNLEVBQ05DLGtCQUFrQixFQUNiO0lBQ0wsSUFBSSxDQUFDRCxRQUFRLE9BQU8sRUFBRTtJQUV0QixPQUFPQSxPQUFPRSxHQUFHLENBQUMsQ0FBQ0M7UUFDakIsTUFBTUMsUUFBZTtZQUFFLEdBQUdELGdCQUFnQjtRQUFDO1FBRTNDLElBQUksQ0FBQ0MsTUFBTUMsSUFBSSxFQUFFLE1BQU0sSUFBSUMsd0JBQWdCLENBQUNGO1FBRTVDLDhEQUE4RDtRQUM5RCxJQUFJRyxJQUFB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
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3Nhbml0aXplLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB3aXRoQ29uZGl0aW9uIGZyb20gJy4uLy4uL2FkbWluL2NvbXBvbmVudHMvZm9ybXMvd2l0aENvbmRpdGlvbidcbmltcG9ydCB7XG4gIER1cGxpY2F0ZUZpZWxkTmFtZSxcbiAgSW52YWxpZEZpZWxkTmFtZSxcbiAgSW52YWxpZEZpZWxkUmVsYXRpb25zaGlwLFxuICBNaXNzaW5nRmllbGRUeXBlLFxufSBmcm9tICcuLi8uLi9lcnJvcnMnXG5pbXBvcnQgTWlzc2luZ0VkaXRvclByb3AgZnJvbSAnLi4vLi4vZXJyb3JzL01pc3NpbmdFZGl0b3JQcm9wcydcbmltcG9ydCB7IGZvcm1hdExhYmVscywgdG9Xb3JkcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5pbXBvcnQgeyBiYXNlQmxvY2tGaWVsZHMgfSBmcm9tICcuLi9iYXNlRmllbGRzL2Jhc2VCbG9ja0ZpZWxkcydcbmltcG9ydCB7IGJhc2VJREZpZWxkIH0gZnJvbSAnLi4vYmFzZUZpZWxkcy9iYXNlSURGaWVsZCdcbmltcG9ydCB2YWxpZGF0aW9ucyBmcm9tICcuLi92YWxpZGF0aW9ucydcbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEsIHRhYkhhc05hbWUgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGNvbmZpZzogQ29uZmlnXG4gIGV4aXN0aW5nRmllbGROYW1lcz86IFNldDxzdHJpbmc+XG4gIGZpZWxkczogRmllbGRbXVxuICAvKipcbiAgICogSWYgdHJ1ZSwgYSByaWNoVGV4dCBmaWVsZCB3aWxsIHJlcXVpcmUgYW4gZWRpdG9yIHByb3BlcnR5IHRvIGJlIHNldCwgYXMgdGhlIHNhbml0aXplRmllbGRzIGZ1bmN0aW9uIHdpbGwgbm90IGFkZCBpdCBmcm9tIHRoZSBwYXlsb2FkIGNvbmZpZyBpZiBub3QgcHJlc2VudC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlcXVpcmVGaWVsZExldmVsUmljaFRleHRFZGl0b3I/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJZiBub3QgbnVsbCwgd2lsbCB2YWxpZGF0ZSB0aGF0IHVwbG9hZCBhbmQgcmVsYXRpb25zaGlwIGZpZWxkcyBkbyBub3QgcmVsYXRlIHRvIGEgY29sbGVjdGlvbiB0aGF0IGlzIG5vdCBpbiB0aGlzIGFycmF5LlxuICAgKiBUaGlzIHZhbGlkYXRpb24gd2lsbCBiZSBza2lwcGVkIGlmIHZhbGlkUmVsYXRpb25zaGlwcyBpcyBudWxsLlxuICAgKi9cbiAgdmFsaWRSZWxhdGlvbnNoaXBzOiBudWxsIHwgc3RyaW5nW11cbn1cblxuZXhwb3J0IGNvbnN0IHNhbml0aXplRmllbGRzID0gKHtcbiAgY29uZmlnLFxuICBleGlzdGluZ0ZpZWxkTmFtZXMgPSBuZXcgU2V0KCksXG4gIGZpZWxkcyxcbiAgcmVxdWlyZUZpZWxkTGV2ZWxSaWNoVGV4dEVkaXRvciA9IGZhbHNlLFxuICB2YWxpZFJlbGF0aW9uc2hpcHMsXG59OiBBcmdzKTogRmllbGRbXSA9PiB7XG4gIGlmICghZmllbGRzKSByZXR1cm4gW11cblxuICByZXR1cm4gZmllbGRzLm1hcCgodW5zYW5pdGl6ZWRGaWVsZCkgPT4ge1xuICAgIGNvbnN0IGZpZWxkOiBGaWVsZCA9IHsgLi4udW5zYW5pdGl6ZWRGaWVsZCB9XG5cbiAgICBpZiAoIWZpZWxkLnR5cGUpIHRocm93IG5ldyBNaXNzaW5nRmllbGRUeXBlKGZpZWxkKVxuXG4gICAgLy8gYXNzZXJ0IHRoYXQgZmllbGQgbmFtZXMgZG8gbm90IGNvbnRhaW4gZm9yYmlkZGVuIGNoYXJhY3RlcnNcbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEZpZWxkTmFtZShmaWVsZCwgZmllbGQubmFtZSlcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcmljaFRleHQgZmllbGQgaGFzIGFuIGVkaXRvclxuICAgIGlmIChmaWVsZC50eXBlID09PSAncmljaFRleHQnICYmICFmaWVsZC5lZGl0b3IpIHtcbiAgICAgIGlmIChjb25maWcuZWRpdG9yICYmICFyZXF1aXJlRmllbGRMZXZlbFJpY2hUZXh0RWRpdG9yKSB7XG4gICAgICAgIGZpZWxkLmVkaXRvciA9IGNvbmZpZy5lZGl0b3JcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBNaXNzaW5nRWRpdG9yUHJvcChmaWVsZClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBdXRvLWxhYmVsXG4gICAgaWYgKFxuICAgICAgJ25hbWUnIGluIGZpZWxkICYmXG4gICAgICBmaWVsZC5uYW1lICYmXG4gICAgICB0eXBlb2YgZmllbGQubGFiZWwgIT09ICdvYmplY3QnICYmXG4gICAgICB0eXBlb2YgZmllbGQubGFiZWwgIT09ICdzdHJpbmcnICYmXG4gICAgICBmaWVsZC5sYWJlbCAhPT0gZmFsc2VcbiAgICApIHtcbiAgICAgIGZpZWxkLmxhYmVsID0gdG9Xb3JkcyhmaWVsZC5uYW1lKVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGZpZWxkLnR5cGUgPT09ICdjaGVja2JveCcgJiZcbiAgICAgIHR5cGVvZiBmaWVsZC5kZWZhdWx0VmFsdWUgPT09ICd1bmRlZmluZWQnICYmXG4gICAgICBmaWVsZC5yZXF1aXJlZCA9PT0gdHJ1ZVxuICAgICkge1xuICAgICAgZmllbGQuZGVmYXVsdFZhbHVlID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgfHwgZmllbGQudHlwZSA9PT0gJ3VwbG9hZCcpIHtcbiAgICAgIGlmICh2YWxpZFJlbGF0aW9uc2hpcHMpIHtcbiAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbylcbiAgICAgICAgICA/IGZpZWxkLnJlbGF0aW9uVG9cbiAgICAgICAgICA6IFtmaWVsZC5yZWxhdGlvblRvXVxuICAgICAgICByZWxhdGlvbnNoaXBzLmZvckVhY2goKHJlbGF0aW9uc2hpcDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKCF2YWxpZFJlbGF0aW9uc2hpcHMuaW5jbHVkZXMocmVsYXRpb25zaGlwKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRGaWVsZFJlbGF0aW9uc2hpcChmaWVsZCwgcmVsYXRpb25zaGlwKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnKSB7XG4gICAgICAgIGlmIChmaWVsZC5taW4gJiYgIWZpZWxkLm1pblJvd3MpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgKHBheWxvYWQpOiBUaGUgXCJtaW5cIiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIGZvciB0aGUgUmVsYXRpb25zaGlwIGZpZWxkIFwiJHtmaWVsZC5uYW1lfVwiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gUGxlYXNlIHVzZSBcIm1pblJvd3NcIiBpbnN0ZWFkLmAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWVsZC5tYXggJiYgIWZpZWxkLm1heFJvd3MpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgKHBheWxvYWQpOiBUaGUgXCJtYXhcIiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIGZvciB0aGUgUmVsYXRpb25zaGlwIGZpZWxkIFwiJHtmaWVsZC5uYW1lfVwiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gUGxlYXNlIHVzZSBcIm1heFJvd3NcIiBpbnN0ZWFkLmAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGZpZWxkLm1pblJvd3MgPSBmaWVsZC5taW5Sb3dzIHx8IGZpZWxkLm1pblxuICAgICAgICBmaWVsZC5tYXhSb3dzID0gZmllbGQubWF4Um93cyB8fCBmaWVsZC5tYXhcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2Jsb2NrcycgJiYgZmllbGQuYmxvY2tzKSB7XG4gICAgICBmaWVsZC5ibG9ja3MgPSBmaWVsZC5ibG9ja3MubWFwKChibG9jaykgPT4gKHtcbiAgICAgICAgLi4uYmxvY2ssXG4gICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLmNvbmNhdChiYXNlQmxvY2tGaWVsZHMpLFxuICAgICAgfSkpXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICdhcnJheScgJiYgZmllbGQuZmllbGRzKSB7XG4gICAgICBmaWVsZC5maWVsZHMucHVzaChiYXNlSURGaWVsZClcbiAgICB9XG5cbiAgICBpZiAoKGZpZWxkLnR5cGUgPT09ICdibG9ja3MnIHx8IGZpZWxkLnR5cGUgPT09ICdhcnJheScpICYmIGZpZWxkLmxhYmVsKSB7XG4gICAgICBmaWVsZC5sYWJlbHMgPSBmaWVsZC5sYWJlbHMgfHwgZm9ybWF0TGFiZWxzKGZpZWxkLm5hbWUpXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBpZiAoZXhpc3RpbmdGaWVsZE5hbWVzLmhhcyhmaWVsZC5uYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlRmllbGROYW1lKGZpZWxkLm5hbWUpXG4gICAgICB9IGVsc2UgaWYgKCFbJ2Jsb2NrTmFtZScsICdpZCddLmluY2x1ZGVzKGZpZWxkLm5hbWUpKSB7XG4gICAgICAgIGV4aXN0aW5nRmllbGROYW1lcy5hZGQoZmllbGQubmFtZSlcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiAhY29uZmlnLmxvY2FsaXphdGlvbikgZGVsZXRlIGZpZWxkLmxvY2FsaXplZFxuXG4gICAgICBpZiAodHlwZW9mIGZpZWxkLnZhbGlkYXRlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBkZWZhdWx0VmFsaWRhdGUgPSB2YWxpZGF0aW9uc1tmaWVsZC50eXBlXVxuICAgICAgICBpZiAoZGVmYXVsdFZhbGlkYXRlKSB7XG4gICAgICAgICAgZmllbGQudmFsaWRhdGUgPSAodmFsLCBvcHRpb25zKSA9PiBkZWZhdWx0VmFsaWRhdGUodmFsLCB7IC4uLmZpZWxkLCAuLi5vcHRpb25zIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGQudmFsaWRhdGUgPSAoKSA9PiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFmaWVsZC5ob29rcykgZmllbGQuaG9va3MgPSB7fVxuICAgICAgaWYgKCFmaWVsZC5hY2Nlc3MpIGZpZWxkLmFjY2VzcyA9IHt9XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLmFkbWluKSB7XG4gICAgICBpZiAoZmllbGQuYWRtaW4uY29uZGl0aW9uICYmIGZpZWxkLmFkbWluLmNvbXBvbmVudHM/LkZpZWxkKSB7XG4gICAgICAgIGZpZWxkLmFkbWluLmNvbXBvbmVudHMuRmllbGQgPSB3aXRoQ29uZGl0aW9uKGZpZWxkLmFkbWluLmNvbXBvbmVudHM/LkZpZWxkKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZC5hZG1pbiA9IHt9XG4gICAgfVxuXG4gICAgaWYgKCdmaWVsZHMnIGluIGZpZWxkICYmIGZpZWxkLmZpZWxkcykge1xuICAgICAgZmllbGQuZmllbGRzID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWcsXG4gICAgICAgIGV4aXN0aW5nRmllbGROYW1lczogZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgPyBuZXcgU2V0KCkgOiBleGlzdGluZ0ZpZWxkTmFtZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICByZXF1aXJlRmllbGRMZXZlbFJpY2hUZXh0RWRpdG9yLFxuICAgICAgICB2YWxpZFJlbGF0aW9uc2hpcHMsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAndGFicycpIHtcbiAgICAgIGZpZWxkLnRhYnMgPSBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiB7XG4gICAgICAgIGNvbnN0IHVuc2FuaXRpemVkVGFiID0geyAuLi50YWIgfVxuICAgICAgICBpZiAodGFiSGFzTmFtZSh0YWIpICYmIHR5cGVvZiB0YWIubGFiZWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdW5zYW5pdGl6ZWRUYWIubGFiZWwgPSB0b1dvcmRzKHRhYi5uYW1lKVxuICAgICAgICB9XG5cbiAgICAgICAgdW5zYW5pdGl6ZWRUYWIuZmllbGRzID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBleGlzdGluZ0ZpZWxkTmFtZXM6IHRhYkhhc05hbWUodGFiKSA/IG5ldyBTZXQoKSA6IGV4aXN0aW5nRmllbGROYW1lcyxcbiAgICAgICAgICBmaWVsZHM6IHRhYi5maWVsZHMsXG4gICAgICAgICAgcmVxdWlyZUZpZWxkTGV2ZWxSaWNoVGV4dEVkaXRvcixcbiAgICAgICAgICB2YWxpZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHVuc2FuaXRpemVkVGFiXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICgnYmxvY2tzJyBpbiBmaWVsZCAmJiBmaWVsZC5ibG9ja3MpIHtcbiAgICAgIGZpZWxkLmJsb2NrcyA9IGZpZWxkLmJsb2Nrcy5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICAgIGNvbnN0IHVuc2FuaXRpemVkQmxvY2sgPSB7IC4uLmJsb2NrIH1cbiAgICAgICAgdW5zYW5pdGl6ZWRCbG9jay5sYWJlbHMgPSAhdW5zYW5pdGl6ZWRCbG9jay5sYWJlbHNcbiAgICAgICAgICA/IGZvcm1hdExhYmVscyh1bnNhbml0aXplZEJsb2NrLnNsdWcpXG4gICAgICAgICAgOiB1bnNhbml0aXplZEJsb2NrLmxhYmVsc1xuXG4gICAgICAgIHVuc2FuaXRpemVkQmxvY2suZmllbGRzID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBleGlzdGluZ0ZpZWxkTmFtZXM6IG5ldyBTZXQoKSxcbiAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICByZXF1aXJlRmllbGRMZXZlbFJpY2hUZXh0RWRpdG9yLFxuICAgICAgICAgIHZhbGlkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gdW5zYW5pdGl6ZWRCbG9ja1xuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gZmllbGRcbiAgfSlcbn1cbiJdLCJuYW1lcyI6WyJzYW5pdGl6ZUZpZWxkcyIsImNvbmZpZyIsImV4aXN0aW5nRmllbGROYW1lcyIsIlNldCIsImZpZWxkcyIsInJlcXVpcmVGaWVsZExldmVsUmljaFRleHRFZGl0b3IiLCJ2YWxpZFJlbGF0aW9uc2hpcHMiLCJtYXAiLCJ1bnNhbml0aXplZEZpZWxkIiwiZmllbGQiLCJ0eXBlIiwiTWlzc2luZ0ZpZWxkVHlwZSIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwiaW5jbHVkZXMiLCJJbnZhbGlkRmllbGROYW1lIiwiZWRpdG9yIiwiTWlzc2luZ0VkaXRvclByb3AiLCJsYWJlbCIsInRvV29yZHMiLCJkZWZhdWx0VmFsdWUiLCJyZXF1aXJlZCIsInJlbGF0aW9uc2hpcHMiLCJBcnJheSIsImlzQXJyYXkiLCJyZWxhdGlvblRvIiwiZm9yRWFjaCIsInJlbGF0aW9uc2hpcCIsIkludmFsaWRGaWVsZFJlbGF0aW9uc2hpcCIsIm1pbiIsIm1pblJvd3MiLCJjb25zb2xlIiwid2FybiIsIm1heCIsIm1heFJvd3MiLCJibG9ja3MiLCJibG9jayIsImNvbmNhdCIsImJhc2VCbG9ja0ZpZWxkcyIsInB1c2giLCJiYXNlSURGaWVsZCIsImxhYmVscyIsImZvcm1hdExhYmVscyIsImhhcyIsIkR1cGxpY2F0ZUZpZWxkTmFtZSIsImFkZCIsImxvY2FsaXplZCIsImxvY2FsaXphdGlvbiIsInZhbGlkYXRlIiwiZGVmYXVsdFZhbGlkYXRlIiwidmFsaWRhdGlvbnMiLCJ2YWwiLCJvcHRpb25zIiwiaG9va3MiLCJhY2Nlc3MiLCJhZG1pbiIsImNvbmRpdGlvbiIsImNvbXBvbmVudHMiLCJGaWVsZCIsIndpdGhDb25kaXRpb24iLCJ0YWJzIiwidGFiIiwidW5zYW5pdGl6ZWRUYWIiLCJ0YWJIYXNOYW1lIiwidW5zYW5pdGl6ZWRCbG9jayIsInNsdWciXSwibWFwcGluZ3MiOiI7Ozs7K0JBa0NhQTs7O2VBQUFBOzs7c0VBL0JhO3dCQU1uQjsyRUFDdUI7OEJBQ1E7aUNBQ047NkJBQ0o7b0VBQ0o7dUJBQ3FCOzs7Ozs7QUFtQnRDLE1BQU1BLGlCQUFpQixDQUFDLEVBQzdCQyxNQUFNLEVBQ05DLHFCQUFxQixJQUFJQyxLQUFLLEVBQzlCQyxNQUFNLEVBQ05DLGtDQUFrQyxLQUFLLEVBQ3ZDQyxrQkFBa0IsRUFDYjtJQUNMLElBQUksQ0FBQ0YsUUFBUSxPQUFPLEVBQUU7SUFFdEIsT0FBT0EsT0FBT0csR0FBRyxDQUFDLENBQUNDO1FBQ2pCLE1BQU1DLFFBQWU7WUFBRSxHQUFHRCxnQkFBZ0I7UUFBQztRQUUzQyxJQUFJLENBQUNDLE1BQU1DLElBQUksRUFBRSxNQUFNLElBQUlDLHdCQUFnQixDQUFDRjtRQUU1Qyw4REFBOEQ7UUFDOUQsSUFBSUcsSUFBQUEsdUJBQWdCLEVBQUNILFVBQVVBLE1BQU1JLElBQUksQ0FBQ0MsUUFBUSxDQUFDLE1BQU07WUFDdkQsTUFBTSxJQUFJQyx3QkFBZ0IsQ0FBQ04sT0FBT0EsTUFBTUksSUFBSTtRQUM5QztRQUVBLGtEQUFrRDtRQUNsRCxJQUFJSixNQUFNQyxJQUFJLEtBQUssY0FBYyxDQUFDRCxNQUFNTyxNQUFNLEVBQUU7WUFDOUMsSUFBSWYsT0FBT2UsTUFBTSxJQUFJLENBQUNYLGlDQUFpQztn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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/fields/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAIrB,eAAO,MAAM,wBAAwB,uBAOvB,CAAA;AAEd,eAAO,MAAM,eAAe,uBAe1B,CAAA;AAEF,eAAO,MAAM,SAAS,uBA8BV,CAAA;AAEZ,eAAO,MAAM,OAAO,uBAKlB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAsBf,CAAA;AAEF,eAAO,MAAM,MAAM,uBAgCjB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAiBnB,CAAA;AAEF,eAAO,MAAM,KAAK,uBAgBhB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAYf,CAAA;AAEF,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/fields/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAIrB,eAAO,MAAM,wBAAwB,uBAOvB,CAAA;AAEd,eAAO,MAAM,eAAe,uBAe1B,CAAA;AAEF,eAAO,MAAM,SAAS,uBA8BV,CAAA;AAEZ,eAAO,MAAM,OAAO,uBAKlB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAsBf,CAAA;AAEF,eAAO,MAAM,MAAM,uBAgCjB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAiBnB,CAAA;AAEF,eAAO,MAAM,KAAK,uBAgBhB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAYf,CAAA;AAEF,eAAO,MAAM,IAAI,uBAYf,CAAA;AAEF,eAAO,MAAM,MAAM,uBAgCjB,CAAA;AAEF,eAAO,MAAM,KAAK,uBA4BhB,CAAA;AAEF,eAAO,MAAM,GAAG,uBAId,CAAA;AAEF,eAAO,MAAM,WAAW,uBAKtB,CAAA;AAeF,eAAO,MAAM,IAAI,uBAQf,CAAA;AAEF,eAAO,MAAM,KAAK,uBAShB,CAAA;AAEF,eAAO,MAAM,KAAK,uBA0BhB,CAAA;AAEF,eAAO,MAAM,MAAM,uBAajB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAYnB,CAAA;AAEF,eAAO,MAAM,KAAK,uBAYhB,CAAA;AAEF,eAAO,MAAM,YAAY,uBA+BvB,CAAA;AAEF,eAAO,MAAM,MAAM,uBAuCjB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAuBnB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAyBf,CAAA;AAEF,eAAO,MAAM,EAAE,uBAoBb,CAAA;AAEF,QAAA,MAAM,WAAW,6BAyBH,CAAA;AAEd,eAAe,WAAW,CAAA"}
|
|
@@ -270,7 +270,8 @@ const json = baseField.keys({
|
|
|
270
270
|
}),
|
|
271
271
|
editorOptions: _joi.default.object().unknown()
|
|
272
272
|
}),
|
|
273
|
-
defaultValue: _joi.default.alternatives().try(_joi.default.array(), _joi.default.object())
|
|
273
|
+
defaultValue: _joi.default.alternatives().try(_joi.default.array(), _joi.default.object()),
|
|
274
|
+
jsonSchema: _joi.default.object().unknown()
|
|
274
275
|
});
|
|
275
276
|
const select = baseField.keys({
|
|
276
277
|
name: _joi.default.string().required(),
|
|
@@ -283,7 +284,9 @@ const select = baseField.keys({
|
|
|
283
284
|
isClearable: _joi.default.boolean().default(false),
|
|
284
285
|
isSortable: _joi.default.boolean().default(false)
|
|
285
286
|
}),
|
|
287
|
+
dbName: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
|
|
286
288
|
defaultValue: _joi.default.alternatives().try(_joi.default.string().allow(''), _joi.default.array().items(_joi.default.string().allow('')), _joi.default.func()),
|
|
289
|
+
enumName: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
|
|
287
290
|
hasMany: _joi.default.boolean().default(false),
|
|
288
291
|
options: _joi.default.array().min(1).items(_joi.default.alternatives().try(_joi.default.string(), _joi.default.object({
|
|
289
292
|
label: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
|
|
@@ -303,6 +306,7 @@ const radio = baseField.keys({
|
|
|
303
306
|
layout: _joi.default.string().valid('vertical', 'horizontal')
|
|
304
307
|
}),
|
|
305
308
|
defaultValue: _joi.default.alternatives().try(_joi.default.string().allow(''), _joi.default.func()),
|
|
309
|
+
enumName: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
|
|
306
310
|
options: _joi.default.array().min(1).items(_joi.default.alternatives().try(_joi.default.string(), _joi.default.object({
|
|
307
311
|
label: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
|
|
308
312
|
_joi.default.string()
|
|
@@ -368,6 +372,7 @@ const array = baseField.keys({
|
|
|
368
372
|
RowLabel: _componentSchema.componentSchema
|
|
369
373
|
}).default({})
|
|
370
374
|
}).default({}),
|
|
375
|
+
dbName: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
|
|
371
376
|
defaultValue: _joi.default.alternatives().try(_joi.default.array().items(_joi.default.object()), _joi.default.func()),
|
|
372
377
|
fields: _joi.default.array().items(_joi.default.link('#field')).required(),
|
|
373
378
|
interfaceName: _joi.default.string(),
|
|
@@ -470,6 +475,7 @@ const blocks = baseField.keys({
|
|
|
470
475
|
blocks: _joi.default.array().items(_joi.default.object({
|
|
471
476
|
slug: _joi.default.string().required(),
|
|
472
477
|
custom: _joi.default.object().pattern(_joi.default.string(), _joi.default.any()),
|
|
478
|
+
dbName: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
|
|
473
479
|
fields: _joi.default.array().items(_joi.default.link('#field')),
|
|
474
480
|
graphQL: _joi.default.object().keys({
|
|
475
481
|
singularName: _joi.default.string()
|
|
@@ -565,4 +571,4 @@ const ui = _joi.default.object().keys({
|
|
|
565
571
|
const fieldSchema = _joi.default.alternatives().try(text, number, textarea, email, code, json, select, group, array, row, collapsible, tabs, radio, relationship, checkbox, upload, richText, blocks, date, point, ui).id('field');
|
|
566
572
|
const _default = fieldSchema;
|
|
567
573
|
|
|
568
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3NjaGVtYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgam9pIGZyb20gJ2pvaSdcblxuaW1wb3J0IHsgY29tcG9uZW50U2NoZW1hIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NoYXJlZC9jb21wb25lbnRTY2hlbWEnXG5cbmV4cG9ydCBjb25zdCBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMgPSBqb2lcbiAgLm9iamVjdCgpXG4gIC5rZXlzKHtcbiAgICBDZWxsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgRmllbGQ6IGNvbXBvbmVudFNjaGVtYSxcbiAgICBGaWx0ZXI6IGNvbXBvbmVudFNjaGVtYSxcbiAgfSlcbiAgLmRlZmF1bHQoe30pXG5cbmV4cG9ydCBjb25zdCBiYXNlQWRtaW5GaWVsZHMgPSBqb2kub2JqZWN0KCkua2V5cyh7XG4gIGNsYXNzTmFtZTogam9pLnN0cmluZygpLFxuICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMsXG4gIGNvbmRpdGlvbjogam9pLmZ1bmMoKSxcbiAgZGVzY3JpcHRpb246IGpvaVxuICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgZGlzYWJsZUJ1bGtFZGl0OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBkaXNhYmxlZDogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaGlkZGVuOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpbml0Q29sbGFwc2VkOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBwb3NpdGlvbjogam9pLnN0cmluZygpLnZhbGlkKCdzaWRlYmFyJyksXG4gIHJlYWRPbmx5OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzdHlsZTogam9pLm9iamVjdCgpLnVua25vd24oKSxcbiAgd2lkdGg6IGpvaS5zdHJpbmcoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBiYXNlRmllbGQgPSBqb2lcbiAgLm9iamVjdCgpXG4gIC5rZXlzKHtcbiAgICBhY2Nlc3M6IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICAgIGNyZWF0ZTogam9pLmZ1bmMoKSxcbiAgICAgIHJlYWQ6IGpvaS5mdW5jKCksXG4gICAgICB1cGRhdGU6IGpvaS5mdW5jKCksXG4gICAgfSksXG4gICAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5kZWZhdWx0KCksXG4gICAgY3VzdG9tOiBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIGpvaS5hbnkoKSksXG4gICAgaGlkZGVuOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGhvb2tzOiBqb2lcbiAgICAgIC5vYmplY3QoKVxuICAgICAgLmtleXMoe1xuICAgICAgICBhZnRlckNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGFmdGVyUmVhZDogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGJlZm9yZUNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGJlZm9yZVZhbGlkYXRlOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKS5kZWZhdWx0KFtdKSxcbiAgICAgIH0pXG4gICAgICAuZGVmYXVsdCgpLFxuICAgIGluZGV4OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGxhYmVsOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSwgam9pLnN0cmluZygpLCBqb2kudmFsaWQoZmFsc2UpKSxcbiAgICBsb2NhbGl6ZWQ6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcmVxdWlyZWQ6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgc2F2ZVRvSldUOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5ib29sZWFuKCksIGpvaS5zdHJpbmcoKSkuZGVmYXVsdChmYWxzZSksXG4gICAgdW5pcXVlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZhbGlkYXRlOiBqb2kuZnVuYygpLFxuICB9KVxuICAuZGVmYXVsdCgpXG5cbmV4cG9ydCBjb25zdCBpZEZpZWxkID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2lkJyksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndGV4dCcsICdudW1iZXInKSxcbiAgbG9jYWxpemVkOiBqb2kuaW52YWxpZCh0cnVlKSxcbiAgcmVxdWlyZWQ6IGpvaS5ub3QoZmFsc2UsIDApLmRlZmF1bHQodHJ1ZSksXG59KVxuXG5leHBvcnQgY29uc3QgdGV4dCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndGV4dCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYXV0b0NvbXBsZXRlOiBqb2kuc3RyaW5nKCksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gICAgcGxhY2Vob2xkZXI6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pLCBqb2kuc3RyaW5nKCkpLFxuICAgIHJ0bDogam9pLmJvb2xlYW4oKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBtYXhMZW5ndGg6IGpvaS5udW1iZXIoKSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIG1pbkxlbmd0aDogam9pLm51bWJlcigpLFxuICBtaW5Sb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbn0pXG5cbmV4cG9ydCBjb25zdCBudW1iZXIgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ251bWJlcicpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYXV0b0NvbXBsZXRlOiBqb2kuc3RyaW5nKCksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2lcbiAgICAgICAgLmFycmF5KClcbiAgICAgICAgLml0ZW1zKGNvbXBvbmVudFNjaGVtYSlcbiAgICAgICAgLndoZW4oJ2hhc01hbnknLCB7IG5vdDogdHJ1ZSwgb3RoZXJ3aXNlOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gICAgICBiZWZvcmVJbnB1dDogam9pXG4gICAgICAgIC5hcnJheSgpXG4gICAgICAgIC5pdGVtcyhjb21wb25lbnRTY2hlbWEpXG4gICAgICAgIC53aGVuKCdoYXNNYW55JywgeyBub3Q6IHRydWUsIG90aGVyd2lzZTogam9pLmZvcmJpZGRlbigpIH0pLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gICAgc3RlcDogam9pLm51bWJlcigpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2lcbiAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAudHJ5KFxuICAgICAgam9pLm51bWJlcigpLFxuICAgICAgam9pLmZ1bmMoKSxcbiAgICAgIGpvaS5hcnJheSgpLndoZW4oJ2hhc01hbnknLCB7IG5vdDogdHJ1ZSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pLFxuICAgICksXG4gIGhhc01hbnk6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIG1heDogam9pLm51bWJlcigpLFxuICBtYXhSb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgbWluOiBqb2kubnVtYmVyKCksXG4gIG1pblJvd3M6IGpvaS5udW1iZXIoKS53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pLFxufSlcblxuZXhwb3J0IGNvbnN0IHRleHRhcmVhID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCd0ZXh0YXJlYScpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gICAgcGxhY2Vob2xkZXI6IGpvaS5zdHJpbmcoKSxcbiAgICByb3dzOiBqb2kubnVtYmVyKCksXG4gICAgcnRsOiBqb2kuYm9vbGVhbigpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgam9pLmZ1bmMoKSksXG4gIG1heExlbmd0aDogam9pLm51bWJlcigpLFxuICBtaW5MZW5ndGg6IGpvaS5udW1iZXIoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBlbWFpbCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnZW1haWwnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGF1dG9Db21wbGV0ZTogam9pLnN0cmluZygpLFxuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbiAgbWF4TGVuZ3RoOiBqb2kubnVtYmVyKCksXG4gIG1pbkxlbmd0aDogam9pLm51bWJlcigpLFxufSlcblxuZXhwb3J0IGNvbnN0IGNvZGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2NvZGUnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGVkaXRvck9wdGlvbnM6IGpvaS5vYmplY3QoKS51bmtub3duKCksIC8vIEVkaXRvclsnb3B0aW9ucyddIEBtb25hY28tZWRpdG9yL3JlYWN0XG4gICAgbGFuZ3VhZ2U6IGpvaS5zdHJpbmcoKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxufSlcblxuZXhwb3J0IGNvbnN0IGpzb24gPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2pzb24nKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGVkaXRvck9wdGlvbnM6IGpvaS5vYmplY3QoKS51bmtub3duKCksIC8vIEVkaXRvclsnb3B0aW9ucyddIEBtb25hY28tZWRpdG9yL3JlYWN0XG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCksIGpvaS5vYmplY3QoKSksXG59KVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdzZWxlY3QnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGlzQ2xlYXJhYmxlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGlzU29ydGFibGU6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaVxuICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgIC50cnkoam9pLnN0cmluZygpLmFsbG93KCcnKSwgam9pLmFycmF5KCkuaXRlbXMoam9pLnN0cmluZygpLmFsbG93KCcnKSksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBvcHRpb25zOiBqb2lcbiAgICAuYXJyYXkoKVxuICAgIC5taW4oMSlcbiAgICAuaXRlbXMoXG4gICAgICBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgICAgICBqb2kuc3RyaW5nKCksXG4gICAgICAgIGpvaS5vYmplY3Qoe1xuICAgICAgICAgIGxhYmVsOiBqb2lcbiAgICAgICAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICAgICAgICB2YWx1ZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCkuYWxsb3coJycpLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKVxuICAgIC5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHJhZGlvID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyYWRpbycpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgfSksXG4gICAgbGF5b3V0OiBqb2kuc3RyaW5nKCkudmFsaWQoJ3ZlcnRpY2FsJywgJ2hvcml6b250YWwnKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCkuYWxsb3coJycpLCBqb2kuZnVuYygpKSxcbiAgb3B0aW9uczogam9pXG4gICAgLmFycmF5KClcbiAgICAubWluKDEpXG4gICAgLml0ZW1zKFxuICAgICAgam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICAgICAgam9pLnN0cmluZygpLFxuICAgICAgICBqb2kub2JqZWN0KHtcbiAgICAgICAgICBsYWJlbDogam9pXG4gICAgICAgICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgICAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSlcbiAgICAgICAgICAgIC5yZXF1aXJlZCgpLFxuICAgICAgICAgIHZhbHVlOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKS5hbGxvdygnJyksXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApXG4gICAgLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3Qgcm93ID0gYmFzZUZpZWxkLmtleXMoe1xuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3JvdycpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMuZGVmYXVsdCgpLFxuICBmaWVsZHM6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5saW5rKCcjZmllbGQnKSksXG59KVxuXG5leHBvcnQgY29uc3QgY29sbGFwc2libGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnY29sbGFwc2libGUnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmRlZmF1bHQoKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLFxuICBsYWJlbDogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGNvbXBvbmVudFNjaGVtYSksXG59KVxuXG5jb25zdCB0YWIgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS53aGVuKCdsb2NhbGl6ZWQnLCB7IGlzOiBqb2kuZXhpc3QoKSwgdGhlbjogam9pLnJlcXVpcmVkKCkgfSksXG4gIGRlc2NyaXB0aW9uOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLnJlcXVpcmVkKCksXG4gIGludGVyZmFjZU5hbWU6IGpvaS5zdHJpbmcoKS53aGVuKCduYW1lJywgeyBub3Q6IGpvaS5leGlzdCgpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIGxhYmVsOiBqb2lcbiAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpXG4gICAgLndoZW4oJ25hbWUnLCB7IGlzOiBqb2kubm90KCksIHRoZW46IGpvaS5yZXF1aXJlZCgpIH0pLFxuICBsb2NhbGl6ZWQ6IGpvaS5ib29sZWFuKCksXG4gIHNhdmVUb0pXVDogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYm9vbGVhbigpLCBqb2kuc3RyaW5nKCkpLFxufSlcblxuZXhwb3J0IGNvbnN0IHRhYnMgPSBiYXNlRmllbGQua2V5cyh7XG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndGFicycpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgZGVzY3JpcHRpb246IGpvaS5mb3JiaWRkZW4oKSxcbiAgfSksXG4gIGZpZWxkczogam9pLmZvcmJpZGRlbigpLFxuICBsb2NhbGl6ZWQ6IGpvaS5mb3JiaWRkZW4oKSxcbiAgdGFiczogam9pLmFycmF5KCkuaXRlbXModGFiKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGdyb3VwID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdncm91cCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgaGlkZUd1dHRlcjogam9pLmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5vYmplY3QoKSwgam9pLmZ1bmMoKSksXG4gIGZpZWxkczogam9pLmFycmF5KCkuaXRlbXMoam9pLmxpbmsoJyNmaWVsZCcpKSxcbiAgaW50ZXJmYWNlTmFtZTogam9pLnN0cmluZygpLFxufSlcblxuZXhwb3J0IGNvbnN0IGFycmF5ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdhcnJheScpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHNcbiAgICAua2V5cyh7XG4gICAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHNcbiAgICAgICAgLmtleXMoe1xuICAgICAgICAgIFJvd0xhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICAgIH0pXG4gICAgICAgIC5kZWZhdWx0KHt9KSxcbiAgICB9KVxuICAgIC5kZWZhdWx0KHt9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5hcnJheSgpLml0ZW1zKGpvaS5vYmplY3QoKSksIGpvaS5mdW5jKCkpLFxuICBmaWVsZHM6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5saW5rKCcjZmllbGQnKSkucmVxdWlyZWQoKSxcbiAgaW50ZXJmYWNlTmFtZTogam9pLnN0cmluZygpLFxuICBsYWJlbHM6IGpvaS5vYmplY3Qoe1xuICAgIHBsdXJhbDogam9pXG4gICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gICAgc2luZ3VsYXI6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICB9KSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLFxuICBtaW5Sb3dzOiBqb2kubnVtYmVyKCksXG59KVxuXG5leHBvcnQgY29uc3QgdXBsb2FkID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCd1cGxvYWQnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5vYmplY3QoKSwgam9pLmZ1bmMoKSksXG4gIGZpbHRlck9wdGlvbnM6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLm9iamVjdCgpLCBqb2kuZnVuYygpKSxcbiAgbWF4RGVwdGg6IGpvaS5udW1iZXIoKSxcbiAgcmVsYXRpb25Ubzogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3QgY2hlY2tib3ggPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2NoZWNrYm94JykucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIGFmdGVySW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgICBiZWZvcmVJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICB9KSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYm9vbGVhbigpLCBqb2kuZnVuYygpKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBwb2ludCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgncG9pbnQnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5hcnJheSgpLml0ZW1zKGpvaS5udW1iZXIoKSkubWF4KDIpLm1pbigyKSwgam9pLmZ1bmMoKSksXG59KVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyZWxhdGlvbnNoaXAnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGFsbG93Q3JlYXRlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgfSksXG4gICAgaXNTb3J0YWJsZTogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBzb3J0T3B0aW9uczogam9pLmFsdGVybmF0aXZlcygpLmNvbmRpdGlvbmFsKGpvaS5yZWYoJy4uLnJlbGF0aW9uVG8nKSwge1xuICAgICAgaXM6IGpvaS5zdHJpbmcoKSxcbiAgICAgIG90aGVyd2lzZTogam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBqb2kuc3RyaW5nKCkpLFxuICAgICAgdGhlbjogam9pLnN0cmluZygpLFxuICAgIH0pLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5mdW5jKCkpLFxuICBmaWx0ZXJPcHRpb25zOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5vYmplY3QoKSwgam9pLmZ1bmMoKSksXG4gIGhhc01hbnk6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIG1heDogam9pXG4gICAgLm51bWJlcigpXG4gICAgLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSlcbiAgICAud2FybmluZygnZGVwcmVjYXRlZCcsIHsgbWVzc2FnZTogJ1VzZSBtYXhSb3dzIGluc3RlYWQuJyB9KSxcbiAgbWF4RGVwdGg6IGpvaS5udW1iZXIoKSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIG1pbjogam9pXG4gICAgLm51bWJlcigpXG4gICAgLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSlcbiAgICAud2FybmluZygnZGVwcmVjYXRlZCcsIHsgbWVzc2FnZTogJ1VzZSBtaW5Sb3dzIGluc3RlYWQuJyB9KSxcbiAgbWluUm93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIHJlbGF0aW9uVG86IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLnJlcXVpcmVkKCksIGpvaS5hcnJheSgpLml0ZW1zKGpvaS5zdHJpbmcoKSkpLFxufSlcblxuZXhwb3J0IGNvbnN0IGJsb2NrcyA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnYmxvY2tzJykucmVxdWlyZWQoKSxcbiAgYmxvY2tzOiBqb2lcbiAgICAuYXJyYXkoKVxuICAgIC5pdGVtcyhcbiAgICAgIGpvaS5vYmplY3Qoe1xuICAgICAgICBzbHVnOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY3VzdG9tOiBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIGpvaS5hbnkoKSksXG4gICAgICAgIGZpZWxkczogam9pLmFycmF5KCkuaXRlbXMoam9pLmxpbmsoJyNmaWVsZCcpKSxcbiAgICAgICAgZ3JhcGhRTDogam9pLm9iamVjdCgpLmtleXMoe1xuICAgICAgICAgIHNpbmd1bGFyTmFtZTogam9pLnN0cmluZygpLFxuICAgICAgICB9KSxcbiAgICAgICAgaW1hZ2VBbHRUZXh0OiBqb2kuc3RyaW5nKCksXG4gICAgICAgIGltYWdlVVJMOiBqb2kuc3RyaW5nKCksXG4gICAgICAgIGludGVyZmFjZU5hbWU6IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgbGFiZWxzOiBqb2kub2JqZWN0KHtcbiAgICAgICAgICBwbHVyYWw6IGpvaVxuICAgICAgICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAgICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICAgICAgICAgIHNpbmd1bGFyOiBqb2lcbiAgICAgICAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICApXG4gICAgLnJlcXVpcmVkKCksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYXJyYXkoKS5pdGVtcyhqb2kub2JqZWN0KCkpLCBqb2kuZnVuYygpKSxcbiAgbGFiZWxzOiBqb2kub2JqZWN0KHtcbiAgICBwbHVyYWw6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICAgIHNpbmd1bGFyOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgfSksXG4gIG1heFJvd3M6IGpvaS5udW1iZXIoKSxcbiAgbWluUm93czogam9pLm51bWJlcigpLFxufSlcblxuZXhwb3J0IGNvbnN0IHJpY2hUZXh0ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyaWNoVGV4dCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgfSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm9iamVjdCgpKSwgam9pLmZ1bmMoKSwgam9pLm9iamVjdCgpKSxcbiAgZWRpdG9yOiBqb2lcbiAgICAub2JqZWN0KClcbiAgICAua2V5cyh7XG4gICAgICBDZWxsQ29tcG9uZW50OiBjb21wb25lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgICAgIEZpZWxkQ29tcG9uZW50OiBjb21wb25lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgICAgIExhenlDZWxsQ29tcG9uZW50OiBqb2kuZnVuYygpLm9wdGlvbmFsKCksXG4gICAgICBMYXp5RmllbGRDb21wb25lbnQ6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIGFmdGVyUmVhZFByb21pc2U6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIG91dHB1dFNjaGVtYTogam9pLmZ1bmMoKS5vcHRpb25hbCgpLFxuICAgICAgcG9wdWxhdGlvblByb21pc2U6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIHZhbGlkYXRlOiBqb2kuZnVuYygpLnJlcXVpcmVkKCksXG4gICAgfSlcbiAgICAudW5rbm93bigpLFxufSlcblxuZXhwb3J0IGNvbnN0IGRhdGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2RhdGUnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICAgIGRhdGU6IGpvaS5vYmplY3Qoe1xuICAgICAgZGlzcGxheUZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgbWF4RGF0ZTogam9pLmRhdGUoKSxcbiAgICAgIG1heFRpbWU6IGpvaS5kYXRlKCksXG4gICAgICBtaW5EYXRlOiBqb2kuZGF0ZSgpLFxuICAgICAgbWluVGltZTogam9pLmRhdGUoKSxcbiAgICAgIG1vbnRoc1RvU2hvdzogam9pLm51bWJlcigpLFxuICAgICAgb3ZlcnJpZGVzOiBqb2kub2JqZWN0KCkudW5rbm93bigpLFxuICAgICAgcGlja2VyQXBwZWFyYW5jZTogam9pLnN0cmluZygpLFxuICAgICAgdGltZUZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgdGltZUludGVydmFsczogam9pLm51bWJlcigpLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbn0pXG5cbmV4cG9ydCBjb25zdCB1aSA9IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndWknKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogam9pXG4gICAgLm9iamVjdCgpXG4gICAgLmtleXMoe1xuICAgICAgY29tcG9uZW50czogam9pXG4gICAgICAgIC5vYmplY3QoKVxuICAgICAgICAua2V5cyh7XG4gICAgICAgICAgQ2VsbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgICAgIEZpZWxkOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICAgIH0pXG4gICAgICAgIC5kZWZhdWx0KHt9KSxcbiAgICAgIGNvbmRpdGlvbjogam9pLmZ1bmMoKSxcbiAgICAgIHBvc2l0aW9uOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3NpZGViYXInKSxcbiAgICAgIHdpZHRoOiBqb2kuc3RyaW5nKCksXG4gICAgfSlcbiAgICAuZGVmYXVsdCgpLFxuICBjdXN0b206IGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgam9pLmFueSgpKSxcbiAgbGFiZWw6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG59KVxuXG5jb25zdCBmaWVsZFNjaGVtYSA9IGpvaVxuICAuYWx0ZXJuYXRpdmVzKClcbiAgLnRyeShcbiAgICB0ZXh0LFxuICAgIG51bWJlcixcbiAgICB0ZXh0YXJlYSxcbiAgICBlbWFpbCxcbiAgICBjb2RlLFxuICAgIGpzb24sXG4gICAgc2VsZWN0LFxuICAgIGdyb3VwLFxuICAgIGFycmF5LFxuICAgIHJvdyxcbiAgICBjb2xsYXBzaWJsZSxcbiAgICB0YWJzLFxuICAgIHJhZGlvLFxuICAgIHJlbGF0aW9uc2hpcCxcbiAgICBjaGVja2JveCxcbiAgICB1cGxvYWQsXG4gICAgcmljaFRleHQsXG4gICAgYmxvY2tzLFxuICAgIGRhdGUsXG4gICAgcG9pbnQsXG4gICAgdWksXG4gIClcbiAgLmlkKCdmaWVsZCcpXG5cbmV4cG9ydCBkZWZhdWx0IGZpZWxkU2NoZW1hXG4iXSwibmFtZXMiOlsiYXJyYXkiLCJiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMiLCJiYXNlQWRtaW5GaWVsZHMiLCJiYXNlRmllbGQiLCJibG9ja3MiLCJjaGVja2JveCIsImNvZGUiLCJjb2xsYXBzaWJsZSIsImRhdGUiLCJlbWFpbCIsImdyb3VwIiwiaWRGaWVsZCIsImpzb24iLCJudW1iZXIiLCJwb2ludCIsInJhZGlvIiwicmVsYXRpb25zaGlwIiwicmljaFRleHQiLCJyb3ciLCJzZWxlY3QiLCJ0YWJzIiwidGV4dCIsInRleHRhcmVhIiwidWkiLCJ1cGxvYWQiLCJqb2kiLCJvYmplY3QiLCJrZXlzIiwiQ2VsbCIsImNvbXBvbmVudFNjaGVtYSIsIkZpZWxkIiwiRmlsdGVyIiwiZGVmYXVsdCIsImNsYXNzTmFtZSIsInN0cmluZyIsImNvbXBvbmVudHMiLCJjb25kaXRpb24iLCJmdW5jIiwiZGVzY3JpcHRpb24iLCJhbHRlcm5hdGl2ZXMiLCJ0cnkiLCJwYXR0ZXJuIiwiZGlzYWJsZUJ1bGtFZGl0IiwiYm9vbGVhbiIsImRpc2FibGVkIiwiaGlkZGVuIiwiaW5pdENvbGxhcHNlZCIsInBvc2l0aW9uIiwidmFsaWQiLCJyZWFkT25seSIsInN0eWxlIiwidW5rbm93biIsIndpZHRoIiwiYWNjZXNzIiwiY3JlYXRlIiwicmVhZCIsInVwZGF0ZSIsImFkbWluIiwiY3VzdG9tIiwiYW55IiwiaG9va3MiLCJhZnRlckNoYW5nZSIsIml0ZW1zIiwiYWZ0ZXJSZWFkIiwiYmVmb3JlQ2hhbmdlIiwiYmVmb3JlVmFsaWRhdGUiLCJpbmRleCIsImxhYmVsIiwibG9jYWxpemVkIiwicmVxdWlyZWQiLCJzYXZlVG9KV1QiLCJ1bmlxdWUiLCJ2YWxpZGF0ZSIsIm5hbWUiLCJ0eXBlIiwiaW52YWxpZCIsIm5vdCIsImF1dG9Db21wbGV0ZSIsIkVycm9yIiwiTGFiZWwiLCJhZnRlcklucHV0IiwiYmVmb3JlSW5wdXQiLCJwbGFjZWhvbGRlciIsInJ0bCIsImRlZmF1bHRWYWx1ZSIsImhhc01hbnkiLCJtYXhMZW5ndGgiLCJtYXhSb3dzIiwid2hlbiIsImlzIiwidGhlbiIsImZvcmJpZGRlbiIsIm1pbkxlbmd0aCIsIm1pblJvd3MiLCJvdGhlcndpc2UiLCJzdGVwIiwibWF4IiwibWluIiwicm93cyIsImVkaXRvck9wdGlvbnMiLCJsYW5ndWFnZSIsImlzQ2xlYXJhYmxlIiwiaXNTb3J0YWJsZSIsImFsbG93Iiwib3B0aW9ucyIsInZhbHVlIiwibGF5b3V0IiwiZmllbGRzIiwibGluayIsInRhYiIsImV4aXN0IiwiaW50ZXJmYWNlTmFtZSIsImhpZGVHdXR0ZXIiLCJSb3dMYWJlbCIsImxhYmVscyIsInBsdXJhbCIsInNpbmd1bGFyIiwiZmlsdGVyT3B0aW9ucyIsIm1heERlcHRoIiwicmVsYXRpb25UbyIsImFsbG93Q3JlYXRlIiwic29ydE9wdGlvbnMiLCJjb25kaXRpb25hbCIsInJlZiIsIndhcm5pbmciLCJtZXNzYWdlIiwic2x1ZyIsImdyYXBoUUwiLCJzaW5ndWxhck5hbWUiLCJpbWFnZUFsdFRleHQiLCJpbWFnZVVSTCIsImVkaXRvciIsIkNlbGxDb21wb25lbnQiLCJvcHRpb25hbCIsIkZpZWxkQ29tcG9uZW50IiwiTGF6eUNlbGxDb21wb25lbnQiLCJMYXp5RmllbGRDb21wb25lbnQiLCJhZnRlclJlYWRQcm9taXNlIiwib3V0cHV0U2NoZW1hIiwicG9wdWxhdGlvblByb21pc2UiLCJkaXNwbGF5Rm9ybWF0IiwibWF4RGF0ZSIsIm1heFRpbWUiLCJtaW5EYXRlIiwibWluVGltZSIsIm1vbnRoc1RvU2hvdyIsIm92ZXJyaWRlcyIsInBpY2tlckFwcGVhcmFuY2UiLCJ0aW1lRm9ybWF0IiwidGltZUludGVydmFscyIsImZpZWxkU2NoZW1hIiwiaWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBMlNhQSxLQUFLO2VBQUxBOztJQXZTQUMsd0JBQXdCO2VBQXhCQTs7SUFTQUMsZUFBZTtlQUFmQTs7SUFpQkFDLFNBQVM7ZUFBVEE7O0lBb1hBQyxNQUFNO2VBQU5BOztJQTdEQUMsUUFBUTtlQUFSQTs7SUFqTEFDLElBQUk7ZUFBSkE7O0lBOEZBQyxXQUFXO2VBQVhBOztJQWlOQUMsSUFBSTtlQUFKQTs7SUE0RWIsT0FBMEI7ZUFBMUI7O0lBN1lhQyxLQUFLO2VBQUxBOztJQThJQUMsS0FBSztlQUFMQTs7SUFsT0FDLE9BQU87ZUFBUEE7O0lBb0hBQyxJQUFJO2VBQUpBOztJQXJGQUMsTUFBTTtlQUFOQTs7SUFzUUFDLEtBQUs7ZUFBTEE7O0lBcElBQyxLQUFLO2VBQUxBOztJQWtKQUMsWUFBWTtlQUFaQTs7SUF5RUFDLFFBQVE7ZUFBUkE7O0lBOUxBQyxHQUFHO2VBQUhBOztJQTdEQUMsTUFBTTtlQUFOQTs7SUF1RkFDLElBQUk7ZUFBSkE7O0lBak5BQyxJQUFJO2VBQUpBOztJQTBEQUMsUUFBUTtlQUFSQTs7SUErV0FDLEVBQUU7ZUFBRkE7O0lBeEtBQyxNQUFNO2VBQU5BOzs7NERBdFVHO2lDQUVnQjs7Ozs7O0FBRXpCLE1BQU12QiwyQkFBMkJ3QixZQUFHLENBQ3hDQyxNQUFNLEdBQ05DLElBQUksQ0FBQztJQUNKQyxNQUFNQyxnQ0FBZTtJQUNyQkMsT0FBT0QsZ0NBQWU7SUFDdEJFLFFBQVFGLGdDQUFlO0FBQ3pCLEdBQ0NHLE9BQU8sQ0FBQyxDQUFDO0FBRUwsTUFBTTlCLGtCQUFrQnVCLFlBQUcsQ0FBQ0MsTUFBTSxHQUFHQyxJQUFJLENBQUM7SUFDL0NNLFdBQVdSLFlBQUcsQ0FBQ1MsTUFBTTtJQUNyQkMsWUFBWWxDO0lBQ1ptQyxXQUFXWCxZQUFHLENBQUNZLElBQUk7SUFDbkJDLGFBQWFiLFlBQUcsQ0FDYmMsWUFBWSxHQUNaQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUNDLE1BQU0sR0FBR2UsT0FBTyxDQUFDaEIsWUFBRyxDQUFDUyxNQUFNLElBQUk7UUFBQ1QsWUFBRyxDQUFDUyxNQUFNO0tBQUcsR0FBR0wsZ0NBQWU7SUFDeEZhLGlCQUFpQmpCLFlBQUcsQ0FBQ2tCLE9BQU8sR0FBR1gsT0FBTyxDQUFDO0lBQ3ZDWSxVQUFVbkIsWUFBRyxDQUFDa0IsT0FBTyxHQUFHWCxPQUFPLENBQUM7SUFDaENhLFFBQVFwQixZQUFHLENBQUNrQixPQUFPLEdBQUdYLE9BQU8sQ0FBQztJQUM5QmMsZUFBZXJCLFlBQUcsQ0FBQ2tCLE9BQU8sR0FBR1gsT0FBTyxDQUFDO0lBQ3JDZSxVQUFVdEIsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQztJQUM3QkMsVUFBVXhCLFlBQUcsQ0FBQ2tCLE9BQU8sR0FBR1gsT0FBTyxDQUFDO0lBQ2hDa0IsT0FBT3pCLFlBQUcsQ0FBQ0MsTUFBTSxHQUFHeUIsT0FBTztJQUMzQkMsT0FBTzNCLFlBQUcsQ0FBQ1MsTUFBTTtBQUNuQjtBQUVPLE1BQU0vQixZQUFZc0IsWUFBRyxDQUN6QkMsTUFBTSxHQUNOQyxJQUFJLENBQUM7SUFDSjBCLFFBQVE1QixZQUFHLENBQUNDLE1BQU0sR0FBR0MsSUFBSSxDQUFDO1FBQ3hCMkIsUUFBUTdCLFlBQUcsQ0FBQ1ksSUFBSTtRQUNoQmtCLE1BQU05QixZQUFHLENBQUNZLElBQUk7UUFDZG1CLFFBQVEvQixZQUFHLENBQUNZLElBQUk7SUFDbEI7SUFDQW9CLE9BQU92RCxnQkFBZ0I4QixPQUFPO0lBQzlCMEIsUUFBUWpDLFlBQUcsQ0FBQ0MsTUFBTSxHQUFHZSxPQUFPLENBQUNoQixZQUFHLENBQUNTLE1BQU0sSUFBSVQsWUFBRyxDQUFDa0MsR0FBRztJQUNsRGQsUUFBUXBCLFlBQUcsQ0FBQ2tCLE9BQU8sR0FBR1gsT0FBTyxDQUFDO0lBQzlCNEIsT0FBT25DLFlBQUcsQ0FDUEMsTUFBTSxHQUNOQyxJQUFJLENBQUM7UUFDSmtDLGFBQWFwQyxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNyQyxZQUFHLENBQUNZLElBQUksSUFBSUwsT0FBTyxDQUFDLEVBQUU7UUFDckQrQixXQUFXdEMsWUFBRyxDQUFDekIsS0FBSyxHQUFHOEQsS0FBSyxDQUFDckMsWUFBRyxDQUFDWSxJQUFJLElBQUlMLE9BQU8sQ0FBQyxFQUFFO1FBQ25EZ0MsY0FBY3ZDLFlBQUcsQ0FBQ3pCLEtBQUssR0FBRzhELEtBQUssQ0FBQ3JDLFlBQUcsQ0FBQ1ksSUFBSSxJQUFJTCxPQUFPLENBQUMsRUFBRTtRQUN0RGlDLGdCQUFnQnhDLFlBQUcsQ0FBQ3pCLEtBQUssR0FBRzhELEtBQUssQ0FBQ3JDLFlBQUcsQ0FBQ1ksSUFBSSxJQUFJTCxPQUFPLENBQUMsRUFBRTtJQUMxRCxHQUNDQSxPQUFPO0lBQ1ZrQyxPQUFPekMsWUFBRyxDQUFDa0IsT0FBTyxHQUFHWCxPQUFPLENBQUM7SUFDN0JtQyxPQUFPMUMsWUFBRyxDQUNQYyxZQUFZLEdBQ1pDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDQyxNQUFNLEdBQUdlLE9BQU8sQ0FBQ2hCLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJO1FBQUNULFlBQUcsQ0FBQ1MsTUFBTTtLQUFHLEdBQUdULFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUN1QixLQUFLLENBQUM7SUFDbkZvQixXQUFXM0MsWUFBRyxDQUFDa0IsT0FBTyxHQUFHWCxPQUFPLENBQUM7SUFDakNxQyxVQUFVNUMsWUFBRyxDQUFDa0IsT0FBTyxHQUFHWCxPQUFPLENBQUM7SUFDaENzQyxXQUFXN0MsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDa0IsT0FBTyxJQUFJbEIsWUFBRyxDQUFDUyxNQUFNLElBQUlGLE9BQU8sQ0FBQztJQUN2RXVDLFFBQVE5QyxZQUFHLENBQUNrQixPQUFPLEdBQUdYLE9BQU8sQ0FBQztJQUM5QndDLFVBQVUvQyxZQUFHLENBQUNZLElBQUk7QUFDcEIsR0FDQ0wsT0FBTztBQUVILE1BQU1yQixVQUFVUixVQUFVd0IsSUFBSSxDQUFDO0lBQ3BDOEMsTUFBTWhELFlBQUcsQ0FBQ1MsTUFBTSxHQUFHYyxLQUFLLENBQUM7SUFDekIwQixNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxRQUFRO0lBQ2pDb0IsV0FBVzNDLFlBQUcsQ0FBQ2tELE9BQU8sQ0FBQztJQUN2Qk4sVUFBVTVDLFlBQUcsQ0FBQ21ELEdBQUcsQ0FBQyxPQUFPLEdBQUc1QyxPQUFPLENBQUM7QUFDdEM7QUFFTyxNQUFNWCxPQUFPbEIsVUFBVXdCLElBQUksQ0FBQztJQUNqQzhDLE1BQU1oRCxZQUFHLENBQUNTLE1BQU0sR0FBR21DLFFBQVE7SUFDM0JLLE1BQU1qRCxZQUFHLENBQUNTLE1BQU0sR0FBR2MsS0FBSyxDQUFDLFFBQVFxQixRQUFRO0lBQ3pDWixPQUFPdkQsZ0JBQWdCeUIsSUFBSSxDQUFDO1FBQzFCa0QsY0FBY3BELFlBQUcsQ0FBQ1MsTUFBTTtRQUN4QkMsWUFBWWxDLHlCQUF5QjBCLElBQUksQ0FBQztZQUN4Q21ELE9BQU9qRCxnQ0FBZTtZQUN0QmtELE9BQU9sRCxnQ0FBZTtZQUN0Qm1ELFlBQVl2RCxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNqQyxnQ0FBZTtZQUM3Q29ELGFBQWF4RCxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNqQyxnQ0FBZTtRQUNoRDtRQUNBcUQsYUFBYXpELFlBQUcsQ0FDYmMsWUFBWSxHQUNaQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ0MsTUFBTSxHQUFHZSxPQUFPLENBQUNoQixZQUFHLENBQUNTLE1BQU0sSUFBSTtZQUFDVCxZQUFHLENBQUNTLE1BQU07U0FBRyxHQUFHVCxZQUFHLENBQUNTLE1BQU07UUFDckVpRCxLQUFLMUQsWUFBRyxDQUFDa0IsT0FBTztJQUNsQjtJQUNBeUMsY0FBYzNELFlBQUcsQ0FBQ2MsWUFBWSxHQUFHQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUNZLElBQUk7SUFDM0RnRCxTQUFTNUQsWUFBRyxDQUFDa0IsT0FBTyxHQUFHWCxPQUFPLENBQUM7SUFDL0JzRCxXQUFXN0QsWUFBRyxDQUFDWixNQUFNO0lBQ3JCMEUsU0FBUzlELFlBQUcsQ0FBQ1osTUFBTSxHQUFHMkUsSUFBSSxDQUFDLFdBQVc7UUFBRUMsSUFBSWhFLFlBQUcsQ0FBQ21ELEdBQUcsQ0FBQztRQUFPYyxNQUFNakUsWUFBRyxDQUFDa0UsU0FBUztJQUFHO0lBQ2pGQyxXQUFXbkUsWUFBRyxDQUFDWixNQUFNO0lBQ3JCZ0YsU0FBU3BFLFlBQUcsQ0FBQ1osTUFBTSxHQUFHMkUsSUFBSSxDQUFDLFdBQVc7UUFBRUMsSUFBSWhFLFlBQUcsQ0FBQ21ELEdBQUcsQ0FBQztRQUFPYyxNQUFNakUsWUFBRyxDQUFDa0UsU0FBUztJQUFHO0FBQ25GO0FBRU8sTUFBTTlFLFNBQVNWLFVBQVV3QixJQUFJLENBQUM7SUFDbkM4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0lBQzNCSyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxVQUFVcUIsUUFBUTtJQUMzQ1osT0FBT3ZELGdCQUFnQnlCLElBQUksQ0FBQztRQUMxQmtELGNBQWNwRCxZQUFHLENBQUNTLE1BQU07UUFDeEJDLFlBQVlsQyx5QkFBeUIwQixJQUFJLENBQUM7WUFDeENtRCxPQUFPakQsZ0NBQWU7WUFDdEJrRCxPQUFPbEQsZ0NBQWU7WUFDdEJtRCxZQUFZdkQsWUFBRyxDQUNaekIsS0FBSyxHQUNMOEQsS0FBSyxDQUFDakMsZ0NBQWUsRUFDckIyRCxJQUFJLENBQUMsV0FBVztnQkFBRVosS0FBSztnQkFBTWtCLFdBQVdyRSxZQUFHLENBQUNrRSxTQUFTO1lBQUc7WUFDM0RWLGFBQWF4RCxZQUFHLENBQ2J6QixLQUFLLEdBQ0w4RCxLQUFLLENBQUNqQyxnQ0FBZSxFQUNyQjJELElBQUksQ0FBQyxXQUFXO2dCQUFFWixLQUFLO2dCQUFNa0IsV0FBV3JFLFlBQUcsQ0FBQ2tFLFNBQVM7WUFBRztRQUM3RDtRQUNBVCxhQUFhekQsWUFBRyxDQUFDUyxNQUFNO1FBQ3ZCNkQsTUFBTXRFLFlBQUcsQ0FBQ1osTUFBTTtJQUNsQjtJQUNBdUUsY0FBYzNELFlBQUcsQ0FDZGMsWUFBWSxHQUNaQyxHQUFHLENBQ0ZmLFlBQUcsQ0FBQ1osTUFBTSxJQUNWWSxZQUFHLENBQUNZLElBQUksSUFDUlosWUFBRyxDQUFDekIsS0FBSyxHQUFHd0YsSUFBSSxDQUFDLFdBQVc7UUFBRVosS0FBSztRQUFNYyxNQUFNakUsWUFBRyxDQUFDa0UsU0FBUztJQUFHO0lBRW5FTixTQUFTNUQsWUFBRyxDQUFDa0IsT0FBTyxHQUFHWCxPQUFPLENBQUM7SUFDL0JnRSxLQUFLdkUsWUFBRyxDQUFDWixNQUFNO0lBQ2YwRSxTQUFTOUQsWUFBRyxDQUFDWixNQUFNLEdBQUcyRSxJQUFJLENBQUMsV0FBVztRQUFFQyxJQUFJaEUsWUFBRyxDQUFDbUQsR0FBRyxDQUFDO1FBQU9jLE1BQU1qRSxZQUFHLENBQUNrRSxTQUFTO0lBQUc7SUFDakZNLEtBQUt4RSxZQUFHLENBQUNaLE1BQU07SUFDZmdGLFNBQVNwRSxZQUFHLENBQUNaLE1BQU0sR0FBRzJFLElBQUksQ0FBQyxXQUFXO1FBQUVDLElBQUloRSxZQUFHLENBQUNtRCxHQUFHLENBQUM7UUFBT2MsTUFBTWpFLFlBQUcsQ0FBQ2tFLFNBQVM7SUFBRztBQUNuRjtBQUVPLE1BQU1yRSxXQUFXbkIsVUFBVXdCLElBQUksQ0FBQztJQUNyQzhDLE1BQU1oRCxZQUFHLENBQUNTLE1BQU0sR0FBR21DLFFBQVE7SUFDM0JLLE1BQU1qRCxZQUFHLENBQUNTLE1BQU0sR0FBR2MsS0FBSyxDQUFDLFlBQVlxQixRQUFRO0lBQzdDWixPQUFPdkQsZ0JBQWdCeUIsSUFBSSxDQUFDO1FBQzFCUSxZQUFZbEMseUJBQXlCMEIsSUFBSSxDQUFDO1lBQ3hDbUQsT0FBT2pELGdDQUFlO1lBQ3RCa0QsT0FBT2xELGdDQUFlO1lBQ3RCbUQsWUFBWXZELFlBQUcsQ0FBQ3pCLEtBQUssR0FBRzhELEtBQUssQ0FBQ2pDLGdDQUFlO1lBQzdDb0QsYUFBYXhELFlBQUcsQ0FBQ3pCLEtBQUssR0FBRzhELEtBQUssQ0FBQ2pDLGdDQUFlO1FBQ2hEO1FBQ0FxRCxhQUFhekQsWUFBRyxDQUFDUyxNQUFNO1FBQ3ZCZ0UsTUFBTXpFLFlBQUcsQ0FBQ1osTUFBTTtRQUNoQnNFLEtBQUsxRCxZQUFHLENBQUNrQixPQUFPO0lBQ2xCO0lBQ0F5QyxjQUFjM0QsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDUyxNQUFNLElBQUlULFlBQUcsQ0FBQ1ksSUFBSTtJQUMzRGlELFdBQVc3RCxZQUFHLENBQUNaLE1BQU07SUFDckIrRSxXQUFXbkUsWUFBRyxDQUFDWixNQUFNO0FBQ3ZCO0FBRU8sTUFBTUosUUFBUU4sVUFBVXdCLElBQUksQ0FBQztJQUNsQzhDLE1BQU1oRCxZQUFHLENBQUNTLE1BQU0sR0FBR21DLFFBQVE7SUFDM0JLLE1BQU1qRCxZQUFHLENBQUNTLE1BQU0sR0FBR2MsS0FBSyxDQUFDLFNBQVNxQixRQUFRO0lBQzFDWixPQUFPdkQsZ0JBQWdCeUIsSUFBSSxDQUFDO1FBQzFCa0QsY0FBY3BELFlBQUcsQ0FBQ1MsTUFBTTtRQUN4QkMsWUFBWWxDLHlCQUF5QjBCLElBQUksQ0FBQztZQUN4Q21ELE9BQU9qRCxnQ0FBZTtZQUN0QmtELE9BQU9sRCxnQ0FBZTtZQUN0Qm1ELFlBQVl2RCxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNqQyxnQ0FBZTtZQUM3Q29ELGFBQWF4RCxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNqQyxnQ0FBZTtRQUNoRDtRQUNBcUQsYUFBYXpELFlBQUcsQ0FBQ1MsTUFBTTtJQUN6QjtJQUNBa0QsY0FBYzNELFlBQUcsQ0FBQ2MsWUFBWSxHQUFHQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUNZLElBQUk7SUFDM0RpRCxXQUFXN0QsWUFBRyxDQUFDWixNQUFNO0lBQ3JCK0UsV0FBV25FLFlBQUcsQ0FBQ1osTUFBTTtBQUN2QjtBQUVPLE1BQU1QLE9BQU9ILFVBQVV3QixJQUFJLENBQUM7SUFDakM4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0lBQzNCSyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxRQUFRcUIsUUFBUTtJQUN6Q1osT0FBT3ZELGdCQUFnQnlCLElBQUksQ0FBQztRQUMxQlEsWUFBWWxDLHlCQUF5QjBCLElBQUksQ0FBQztZQUN4Q21ELE9BQU9qRCxnQ0FBZTtZQUN0QmtELE9BQU9sRCxnQ0FBZTtRQUN4QjtRQUNBc0UsZUFBZTFFLFlBQUcsQ0FBQ0MsTUFBTSxHQUFHeUIsT0FBTztRQUNuQ2lELFVBQVUzRSxZQUFHLENBQUNTLE1BQU07SUFDdEI7SUFDQWtELGNBQWMzRCxZQUFHLENBQUNjLFlBQVksR0FBR0MsR0FBRyxDQUFDZixZQUFHLENBQUNTLE1BQU0sSUFBSVQsWUFBRyxDQUFDWSxJQUFJO0FBQzdEO0FBRU8sTUFBTXpCLE9BQU9ULFVBQVV3QixJQUFJLENBQUM7SUFDakM4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0lBQzNCSyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxRQUFRcUIsUUFBUTtJQUN6Q1osT0FBT3ZELGdCQUFnQnlCLElBQUksQ0FBQztRQUMxQlEsWUFBWWxDLHlCQUF5QjBCLElBQUksQ0FBQztZQUN4Q21ELE9BQU9qRCxnQ0FBZTtZQUN0QmtELE9BQU9sRCxnQ0FBZTtRQUN4QjtRQUNBc0UsZUFBZTFFLFlBQUcsQ0FBQ0MsTUFBTSxHQUFHeUIsT0FBTztJQUNyQztJQUNBaUMsY0FBYzNELFlBQUcsQ0FBQ2MsWUFBWSxHQUFHQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ3pCLEtBQUssSUFBSXlCLFlBQUcsQ0FBQ0MsTUFBTTtBQUM5RDtBQUVPLE1BQU1QLFNBQVNoQixVQUFVd0IsSUFBSSxDQUFDO0lBQ25DOEMsTUFBTWhELFlBQUcsQ0FBQ1MsTUFBTSxHQUFHbUMsUUFBUTtJQUMzQkssTUFBTWpELFlBQUcsQ0FBQ1MsTUFBTSxHQUFHYyxLQUFLLENBQUMsVUFBVXFCLFFBQVE7SUFDM0NaLE9BQU92RCxnQkFBZ0J5QixJQUFJLENBQUM7UUFDMUJRLFlBQVlsQyx5QkFBeUIwQixJQUFJLENBQUM7WUFDeENtRCxPQUFPakQsZ0NBQWU7WUFDdEJrRCxPQUFPbEQsZ0NBQWU7UUFDeEI7UUFDQXdFLGFBQWE1RSxZQUFHLENBQUNrQixPQUFPLEdBQUdYLE9BQU8sQ0FBQztRQUNuQ3NFLFlBQVk3RSxZQUFHLENBQUNrQixPQUFPLEdBQUdYLE9BQU8sQ0FBQztJQUNwQztJQUNBb0QsY0FBYzNELFlBQUcsQ0FDZGMsWUFBWSxHQUNaQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ1MsTUFBTSxHQUFHcUUsS0FBSyxDQUFDLEtBQUs5RSxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNyQyxZQUFHLENBQUNTLE1BQU0sR0FBR3FFLEtBQUssQ0FBQyxNQUFNOUUsWUFBRyxDQUFDWSxJQUFJO0lBQ2xGZ0QsU0FBUzVELFlBQUcsQ0FBQ2tCLE9BQU8sR0FBR1gsT0FBTyxDQUFDO0lBQy9Cd0UsU0FBUy9FLFlBQUcsQ0FDVHpCLEtBQUssR0FDTGlHLEdBQUcsQ0FBQyxHQUNKbkMsS0FBSyxDQUNKckMsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FDcEJmLFlBQUcsQ0FBQ1MsTUFBTSxJQUNWVCxZQUFHLENBQUNDLE1BQU0sQ0FBQztRQUNUeUMsT0FBTzFDLFlBQUcsQ0FDUGMsWUFBWSxHQUNaQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUNDLE1BQU0sR0FBR2UsT0FBTyxDQUFDaEIsWUFBRyxDQUFDUyxNQUFNLElBQUk7WUFBQ1QsWUFBRyxDQUFDUyxNQUFNO1NBQUc7UUFDdEV1RSxPQUFPaEYsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRLEdBQUdrQyxLQUFLLENBQUM7SUFDdkMsS0FHSGxDLFFBQVE7QUFDYjtBQUVPLE1BQU10RCxRQUFRWixVQUFVd0IsSUFBSSxDQUFDO0lBQ2xDOEMsTUFBTWhELFlBQUcsQ0FBQ1MsTUFBTSxHQUFHbUMsUUFBUTtJQUMzQkssTUFBTWpELFlBQUcsQ0FBQ1MsTUFBTSxHQUFHYyxLQUFLLENBQUMsU0FBU3FCLFFBQVE7SUFDMUNaLE9BQU92RCxnQkFBZ0J5QixJQUFJLENBQUM7UUFDMUJRLFlBQVlsQyx5QkFBeUIwQixJQUFJLENBQUM7WUFDeENtRCxPQUFPakQsZ0NBQWU7WUFDdEJrRCxPQUFPbEQsZ0NBQWU7UUFDeEI7UUFDQTZFLFFBQVFqRixZQUFHLENBQUNTLE1BQU0sR0FBR2MsS0FBSyxDQUFDLFlBQVk7SUFDekM7SUFDQW9DLGNBQWMzRCxZQUFHLENBQUNjLFlBQVksR0FBR0MsR0FBRyxDQUFDZixZQUFHLENBQUNTLE1BQU0sR0FBR3FFLEtBQUssQ0FBQyxLQUFLOUUsWUFBRyxDQUFDWSxJQUFJO0lBQ3JFbUUsU0FBUy9FLFlBQUcsQ0FDVHpCLEtBQUssR0FDTGlHLEdBQUcsQ0FBQyxHQUNKbkMsS0FBSyxDQUNKckMsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FDcEJmLFlBQUcsQ0FBQ1MsTUFBTSxJQUNWVCxZQUFHLENBQUNDLE1BQU0sQ0FBQztRQUNUeUMsT0FBTzFDLFlBQUcsQ0FDUGMsWUFBWSxHQUNaQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUNDLE1BQU0sR0FBR2UsT0FBTyxDQUFDaEIsWUFBRyxDQUFDUyxNQUFNLElBQUk7WUFBQ1QsWUFBRyxDQUFDUyxNQUFNO1NBQUcsR0FDbkVtQyxRQUFRO1FBQ1hvQyxPQUFPaEYsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRLEdBQUdrQyxLQUFLLENBQUM7SUFDdkMsS0FHSGxDLFFBQVE7QUFDYjtBQUVPLE1BQU1uRCxNQUFNZixVQUFVd0IsSUFBSSxDQUFDO0lBQ2hDK0MsTUFBTWpELFlBQUcsQ0FBQ1MsTUFBTSxHQUFHYyxLQUFLLENBQUMsT0FBT3FCLFFBQVE7SUFDeENaLE9BQU92RCxnQkFBZ0I4QixPQUFPO0lBQzlCMkUsUUFBUWxGLFlBQUcsQ0FBQ3pCLEtBQUssR0FBRzhELEtBQUssQ0FBQ3JDLFlBQUcsQ0FBQ21GLElBQUksQ0FBQztBQUNyQztBQUVPLE1BQU1yRyxjQUFjSixVQUFVd0IsSUFBSSxDQUFDO0lBQ3hDK0MsTUFBTWpELFlBQUcsQ0FBQ1MsTUFBTSxHQUFHYyxLQUFLLENBQUMsZUFBZXFCLFFBQVE7SUFDaERaLE9BQU92RCxnQkFBZ0I4QixPQUFPO0lBQzlCMkUsUUFBUWxGLFlBQUcsQ0FBQ3pCLEtBQUssR0FBRzhELEtBQUssQ0FBQ3JDLFlBQUcsQ0FBQ21GLElBQUksQ0FBQztJQUNuQ3pDLE9BQU8xQyxZQUFHLENBQUNjLFlBQVksR0FBR0MsR0FBRyxDQUFDZixZQUFHLENBQUNTLE1BQU0sSUFBSUwsZ0NBQWU7QUFDN0Q7QUFFQSxNQUFNZ0YsTUFBTTFHLFVBQVV3QixJQUFJLENBQUM7SUFDekI4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdzRCxJQUFJLENBQUMsYUFBYTtRQUFFQyxJQUFJaEUsWUFBRyxDQUFDcUYsS0FBSztRQUFJcEIsTUFBTWpFLFlBQUcsQ0FBQzRDLFFBQVE7SUFBRztJQUM3RS9CLGFBQWFiLFlBQUcsQ0FBQ2MsWUFBWSxHQUFHQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJTCxnQ0FBZTtJQUNqRThFLFFBQVFsRixZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNyQyxZQUFHLENBQUNtRixJQUFJLENBQUMsV0FBV3ZDLFFBQVE7SUFDdEQwQyxlQUFldEYsWUFBRyxDQUFDUyxNQUFNLEdBQUdzRCxJQUFJLENBQUMsUUFBUTtRQUFFWixLQUFLbkQsWUFBRyxDQUFDcUYsS0FBSztRQUFJcEIsTUFBTWpFLFlBQUcsQ0FBQ2tFLFNBQVM7SUFBRztJQUNuRnhCLE9BQU8xQyxZQUFHLENBQ1BjLFlBQVksR0FDWkMsR0FBRyxDQUFDZixZQUFHLENBQUNTLE1BQU0sSUFBSVQsWUFBRyxDQUFDQyxNQUFNLEdBQUdlLE9BQU8sQ0FBQ2hCLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJO1FBQUNULFlBQUcsQ0FBQ1MsTUFBTTtLQUFHLEdBQ25Fc0QsSUFBSSxDQUFDLFFBQVE7UUFBRUMsSUFBSWhFLFlBQUcsQ0FBQ21ELEdBQUc7UUFBSWMsTUFBTWpFLFlBQUcsQ0FBQzRDLFFBQVE7SUFBRztJQUN0REQsV0FBVzNDLFlBQUcsQ0FBQ2tCLE9BQU87SUFDdEIyQixXQUFXN0MsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDa0IsT0FBTyxJQUFJbEIsWUFBRyxDQUFDUyxNQUFNO0FBQzdEO0FBRU8sTUFBTWQsT0FBT2pCLFVBQVV3QixJQUFJLENBQUM7SUFDakMrQyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxRQUFRcUIsUUFBUTtJQUN6Q1osT0FBT3ZELGdCQUFnQnlCLElBQUksQ0FBQztRQUMxQlcsYUFBYWIsWUFBRyxDQUFDa0UsU0FBUztJQUM1QjtJQUNBZ0IsUUFBUWxGLFlBQUcsQ0FBQ2tFLFNBQVM7SUFDckJ2QixXQUFXM0MsWUFBRyxDQUFDa0UsU0FBUztJQUN4QnZFLE1BQU1LLFlBQUcsQ0FBQ3pCLEtBQUssR0FBRzhELEtBQUssQ0FBQytDLEtBQUt4QyxRQUFRO0FBQ3ZDO0FBRU8sTUFBTTNELFFBQVFQLFVBQVV3QixJQUFJLENBQUM7SUFDbEM4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0lBQzNCSyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxTQUFTcUIsUUFBUTtJQUMxQ1osT0FBT3ZELGdCQUFnQnlCLElBQUksQ0FBQztRQUMxQnFGLFlBQVl2RixZQUFHLENBQUNrQixPQUFPLEdBQUdYLE9BQU8sQ0FBQztJQUNwQztJQUNBb0QsY0FBYzNELFlBQUcsQ0FBQ2MsWUFBWSxHQUFHQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ0MsTUFBTSxJQUFJRCxZQUFHLENBQUNZLElBQUk7SUFDM0RzRSxRQUFRbEYsWUFBRyxDQUFDekIsS0FBSyxHQUFHOEQsS0FBSyxDQUFDckMsWUFBRyxDQUFDbUYsSUFBSSxDQUFDO0lBQ25DRyxlQUFldEYsWUFBRyxDQUFDUyxNQUFNO0FBQzNCO0FBRU8sTUFBTWxDLFFBQVFHLFVBQVV3QixJQUFJLENBQUM7SUFDbEM4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0lBQzNCSyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxTQUFTcUIsUUFBUTtJQUMxQ1osT0FBT3ZELGdCQUNKeUIsSUFBSSxDQUFDO1FBQ0pRLFlBQVlsQyx5QkFDVDBCLElBQUksQ0FBQztZQUNKc0YsVUFBVXBGLGdDQUFlO1FBQzNCLEdBQ0NHLE9BQU8sQ0FBQyxDQUFDO0lBQ2QsR0FDQ0EsT0FBTyxDQUFDLENBQUM7SUFDWm9ELGNBQWMzRCxZQUFHLENBQUNjLFlBQVksR0FBR0MsR0FBRyxDQUFDZixZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNyQyxZQUFHLENBQUNDLE1BQU0sS0FBS0QsWUFBRyxDQUFDWSxJQUFJO0lBQzlFc0UsUUFBUWxGLFlBQUcsQ0FBQ3pCLEtBQUssR0FBRzhELEtBQUssQ0FBQ3JDLFlBQUcsQ0FBQ21GLElBQUksQ0FBQyxXQUFXdkMsUUFBUTtJQUN0RDBDLGVBQWV0RixZQUFHLENBQUNTLE1BQU07SUFDekJnRixRQUFRekYsWUFBRyxDQUFDQyxNQUFNLENBQUM7UUFDakJ5RixRQUFRMUYsWUFBRyxDQUNSYyxZQUFZLEdBQ1pDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDUyxNQUFNLElBQUlULFlBQUcsQ0FBQ0MsTUFBTSxHQUFHZSxPQUFPLENBQUNoQixZQUFHLENBQUNTLE1BQU0sSUFBSTtZQUFDVCxZQUFHLENBQUNTLE1BQU07U0FBRztRQUN0RWtGLFVBQVUzRixZQUFHLENBQ1ZjLFlBQVksR0FDWkMsR0FBRyxDQUFDZixZQUFHLENBQUNTLE1BQU0sSUFBSVQsWUFBRyxDQUFDQyxNQUFNLEdBQUdlLE9BQU8sQ0FBQ2hCLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJO1lBQUNULFlBQUcsQ0FBQ1MsTUFBTTtTQUFHO0lBQ3hFO0lBQ0FxRCxTQUFTOUQsWUFBRyxDQUFDWixNQUFNO0lBQ25CZ0YsU0FBU3BFLFlBQUcsQ0FBQ1osTUFBTTtBQUNyQjtBQUVPLE1BQU1XLFNBQVNyQixVQUFVd0IsSUFBSSxDQUFDO0lBQ25DOEMsTUFBTWhELFlBQUcsQ0FBQ1MsTUFBTSxHQUFHbUMsUUFBUTtJQUMzQkssTUFBTWpELFlBQUcsQ0FBQ1MsTUFBTSxHQUFHYyxLQUFLLENBQUMsVUFBVXFCLFFBQVE7SUFDM0NaLE9BQU92RCxnQkFBZ0J5QixJQUFJLENBQUM7UUFDMUJRLFlBQVlsQyx5QkFBeUIwQixJQUFJLENBQUM7WUFDeENtRCxPQUFPakQsZ0NBQWU7WUFDdEJrRCxPQUFPbEQsZ0NBQWU7UUFDeEI7SUFDRjtJQUNBdUQsY0FBYzNELFlBQUcsQ0FBQ2MsWUFBWSxHQUFHQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ0MsTUFBTSxJQUFJRCxZQUFHLENBQUNZLElBQUk7SUFDM0RnRixlQUFlNUYsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDQyxNQUFNLElBQUlELFlBQUcsQ0FBQ1ksSUFBSTtJQUM1RGlGLFVBQVU3RixZQUFHLENBQUNaLE1BQU07SUFDcEIwRyxZQUFZOUYsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0FBQ25DO0FBRU8sTUFBTWhFLFdBQVdGLFVBQVV3QixJQUFJLENBQUM7SUFDckM4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0lBQzNCSyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxZQUFZcUIsUUFBUTtJQUM3Q1osT0FBT3ZELGdCQUFnQnlCLElBQUksQ0FBQztRQUMxQlEsWUFBWWxDLHlCQUF5QjBCLElBQUksQ0FBQztZQUN4Q21ELE9BQU9qRCxnQ0FBZTtZQUN0QmtELE9BQU9sRCxnQ0FBZTtZQUN0Qm1ELFlBQVl2RCxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNqQyxnQ0FBZTtZQUM3Q29ELGFBQWF4RCxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNqQyxnQ0FBZTtRQUNoRDtJQUNGO0lBQ0F1RCxjQUFjM0QsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDa0IsT0FBTyxJQUFJbEIsWUFBRyxDQUFDWSxJQUFJO0FBQzlEO0FBRU8sTUFBTXZCLFFBQVFYLFVBQVV3QixJQUFJLENBQUM7SUFDbEM4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0lBQzNCSyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxTQUFTcUIsUUFBUTtJQUMxQ1osT0FBT3ZELGdCQUFnQnlCLElBQUksQ0FBQztRQUMxQlEsWUFBWWxDLHlCQUF5QjBCLElBQUksQ0FBQztZQUN4Q21ELE9BQU9qRCxnQ0FBZTtZQUN0QmtELE9BQU9sRCxnQ0FBZTtZQUN0Qm1ELFlBQVl2RCxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNqQyxnQ0FBZTtZQUM3Q29ELGFBQWF4RCxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNqQyxnQ0FBZTtRQUNoRDtJQUNGO0lBQ0F1RCxjQUFjM0QsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDekIsS0FBSyxHQUFHOEQsS0FBSyxDQUFDckMsWUFBRyxDQUFDWixNQUFNLElBQUltRixHQUFHLENBQUMsR0FBR0MsR0FBRyxDQUFDLElBQUl4RSxZQUFHLENBQUNZLElBQUk7QUFDOUY7QUFFTyxNQUFNckIsZUFBZWIsVUFBVXdCLElBQUksQ0FBQztJQUN6QzhDLE1BQU1oRCxZQUFHLENBQUNTLE1BQU0sR0FBR21DLFFBQVE7SUFDM0JLLE1BQU1qRCxZQUFHLENBQUNTLE1BQU0sR0FBR2MsS0FBSyxDQUFDLGdCQUFnQnFCLFFBQVE7SUFDakRaLE9BQU92RCxnQkFBZ0J5QixJQUFJLENBQUM7UUFDMUI2RixhQUFhL0YsWUFBRyxDQUFDa0IsT0FBTyxHQUFHWCxPQUFPLENBQUM7UUFDbkNHLFlBQVlsQyx5QkFBeUIwQixJQUFJLENBQUM7WUFDeENtRCxPQUFPakQsZ0NBQWU7WUFDdEJrRCxPQUFPbEQsZ0NBQWU7UUFDeEI7UUFDQXlFLFlBQVk3RSxZQUFHLENBQUNrQixPQUFPLEdBQUdYLE9BQU8sQ0FBQztRQUNsQ3lGLGFBQWFoRyxZQUFHLENBQUNjLFlBQVksR0FBR21GLFdBQVcsQ0FBQ2pHLFlBQUcsQ0FBQ2tHLEdBQUcsQ0FBQyxrQkFBa0I7WUFDcEVsQyxJQUFJaEUsWUFBRyxDQUFDUyxNQUFNO1lBQ2Q0RCxXQUFXckUsWUFBRyxDQUFDQyxNQUFNLEdBQUdlLE9BQU8sQ0FBQ2hCLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUNTLE1BQU07WUFDeER3RCxNQUFNakUsWUFBRyxDQUFDUyxNQUFNO1FBQ2xCO0lBQ0Y7SUFDQWtELGNBQWMzRCxZQUFHLENBQUNjLFlBQVksR0FBR0MsR0FBRyxDQUFDZixZQUFHLENBQUNZLElBQUk7SUFDN0NnRixlQUFlNUYsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDQyxNQUFNLElBQUlELFlBQUcsQ0FBQ1ksSUFBSTtJQUM1RGdELFNBQVM1RCxZQUFHLENBQUNrQixPQUFPLEdBQUdYLE9BQU8sQ0FBQztJQUMvQmdFLEtBQUt2RSxZQUFHLENBQ0xaLE1BQU0sR0FDTjJFLElBQUksQ0FBQyxXQUFXO1FBQUVDLElBQUloRSxZQUFHLENBQUNtRCxHQUFHLENBQUM7UUFBT2MsTUFBTWpFLFlBQUcsQ0FBQ2tFLFNBQVM7SUFBRyxHQUMzRGlDLE9BQU8sQ0FBQyxjQUFjO1FBQUVDLFNBQVM7SUFBdUI7SUFDM0RQLFVBQVU3RixZQUFHLENBQUNaLE1BQU07SUFDcEIwRSxTQUFTOUQsWUFBRyxDQUFDWixNQUFNLEdBQUcyRSxJQUFJLENBQUMsV0FBVztRQUFFQyxJQUFJaEUsWUFBRyxDQUFDbUQsR0FBRyxDQUFDO1FBQU9jLE1BQU1qRSxZQUFHLENBQUNrRSxTQUFTO0lBQUc7SUFDakZNLEtBQUt4RSxZQUFHLENBQ0xaLE1BQU0sR0FDTjJFLElBQUksQ0FBQyxXQUFXO1FBQUVDLElBQUloRSxZQUFHLENBQUNtRCxHQUFHLENBQUM7UUFBT2MsTUFBTWpFLFlBQUcsQ0FBQ2tFLFNBQVM7SUFBRyxHQUMzRGlDLE9BQU8sQ0FBQyxjQUFjO1FBQUVDLFNBQVM7SUFBdUI7SUFDM0RoQyxTQUFTcEUsWUFBRyxDQUFDWixNQUFNLEdBQUcyRSxJQUFJLENBQUMsV0FBVztRQUFFQyxJQUFJaEUsWUFBRyxDQUFDbUQsR0FBRyxDQUFDO1FBQU9jLE1BQU1qRSxZQUFHLENBQUNrRSxTQUFTO0lBQUc7SUFDakY0QixZQUFZOUYsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRLElBQUk1QyxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNyQyxZQUFHLENBQUNTLE1BQU07QUFDMUY7QUFFTyxNQUFNOUIsU0FBU0QsVUFBVXdCLElBQUksQ0FBQztJQUNuQzhDLE1BQU1oRCxZQUFHLENBQUNTLE1BQU0sR0FBR21DLFFBQVE7SUFDM0JLLE1BQU1qRCxZQUFHLENBQUNTLE1BQU0sR0FBR2MsS0FBSyxDQUFDLFVBQVVxQixRQUFRO0lBQzNDakUsUUFBUXFCLFlBQUcsQ0FDUnpCLEtBQUssR0FDTDhELEtBQUssQ0FDSnJDLFlBQUcsQ0FBQ0MsTUFBTSxDQUFDO1FBQ1RvRyxNQUFNckcsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO1FBQzNCWCxRQUFRakMsWUFBRyxDQUFDQyxNQUFNLEdBQUdlLE9BQU8sQ0FBQ2hCLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUNrQyxHQUFHO1FBQ2xEZ0QsUUFBUWxGLFlBQUcsQ0FBQ3pCLEtBQUssR0FBRzhELEtBQUssQ0FBQ3JDLFlBQUcsQ0FBQ21GLElBQUksQ0FBQztRQUNuQ21CLFNBQVN0RyxZQUFHLENBQUNDLE1BQU0sR0FBR0MsSUFBSSxDQUFDO1lBQ3pCcUcsY0FBY3ZHLFlBQUcsQ0FBQ1MsTUFBTTtRQUMxQjtRQUNBK0YsY0FBY3hHLFlBQUcsQ0FBQ1MsTUFBTTtRQUN4QmdHLFVBQVV6RyxZQUFHLENBQUNTLE1BQU07UUFDcEI2RSxlQUFldEYsWUFBRyxDQUFDUyxNQUFNO1FBQ3pCZ0YsUUFBUXpGLFlBQUcsQ0FBQ0MsTUFBTSxDQUFDO1lBQ2pCeUYsUUFBUTFGLFlBQUcsQ0FDUmMsWUFBWSxHQUNaQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUNDLE1BQU0sR0FBR2UsT0FBTyxDQUFDaEIsWUFBRyxDQUFDUyxNQUFNLElBQUk7Z0JBQUNULFlBQUcsQ0FBQ1MsTUFBTTthQUFHO1lBQ3RFa0YsVUFBVTNGLFlBQUcsQ0FDVmMsWUFBWSxHQUNaQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUNDLE1BQU0sR0FBR2UsT0FBTyxDQUFDaEIsWUFBRyxDQUFDUyxNQUFNLElBQUk7Z0JBQUNULFlBQUcsQ0FBQ1MsTUFBTTthQUFHO1FBQ3hFO0lBQ0YsSUFFRG1DLFFBQVE7SUFDWGUsY0FBYzNELFlBQUcsQ0FBQ2MsWUFBWSxHQUFHQyxHQUFHLENBQUNmLFlBQUcsQ0FBQ3pCLEtBQUssR0FBRzhELEtBQUssQ0FBQ3JDLFlBQUcsQ0FBQ0MsTUFBTSxLQUFLRCxZQUFHLENBQUNZLElBQUk7SUFDOUU2RSxRQUFRekYsWUFBRyxDQUFDQyxNQUFNLENBQUM7UUFDakJ5RixRQUFRMUYsWUFBRyxDQUNSYyxZQUFZLEdBQ1pDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDUyxNQUFNLElBQUlULFlBQUcsQ0FBQ0MsTUFBTSxHQUFHZSxPQUFPLENBQUNoQixZQUFHLENBQUNTLE1BQU0sSUFBSTtZQUFDVCxZQUFHLENBQUNTLE1BQU07U0FBRztRQUN0RWtGLFVBQVUzRixZQUFHLENBQ1ZjLFlBQVksR0FDWkMsR0FBRyxDQUFDZixZQUFHLENBQUNTLE1BQU0sSUFBSVQsWUFBRyxDQUFDQyxNQUFNLEdBQUdlLE9BQU8sQ0FBQ2hCLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJO1lBQUNULFlBQUcsQ0FBQ1MsTUFBTTtTQUFHO0lBQ3hFO0lBQ0FxRCxTQUFTOUQsWUFBRyxDQUFDWixNQUFNO0lBQ25CZ0YsU0FBU3BFLFlBQUcsQ0FBQ1osTUFBTTtBQUNyQjtBQUVPLE1BQU1JLFdBQVdkLFVBQVV3QixJQUFJLENBQUM7SUFDckM4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0lBQzNCSyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxZQUFZcUIsUUFBUTtJQUM3Q1osT0FBT3ZELGdCQUFnQnlCLElBQUksQ0FBQztRQUMxQlEsWUFBWWxDLHlCQUF5QjBCLElBQUksQ0FBQztZQUN4Q21ELE9BQU9qRCxnQ0FBZTtZQUN0QmtELE9BQU9sRCxnQ0FBZTtRQUN4QjtJQUNGO0lBQ0F1RCxjQUFjM0QsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDekIsS0FBSyxHQUFHOEQsS0FBSyxDQUFDckMsWUFBRyxDQUFDQyxNQUFNLEtBQUtELFlBQUcsQ0FBQ1ksSUFBSSxJQUFJWixZQUFHLENBQUNDLE1BQU07SUFDNUZ5RyxRQUFRMUcsWUFBRyxDQUNSQyxNQUFNLEdBQ05DLElBQUksQ0FBQztRQUNKeUcsZUFBZXZHLGdDQUFlLENBQUN3RyxRQUFRO1FBQ3ZDQyxnQkFBZ0J6RyxnQ0FBZSxDQUFDd0csUUFBUTtRQUN4Q0UsbUJBQW1COUcsWUFBRyxDQUFDWSxJQUFJLEdBQUdnRyxRQUFRO1FBQ3RDRyxvQkFBb0IvRyxZQUFHLENBQUNZLElBQUksR0FBR2dHLFFBQVE7UUFDdkNJLGtCQUFrQmhILFlBQUcsQ0FBQ1ksSUFBSSxHQUFHZ0csUUFBUTtRQUNyQ0ssY0FBY2pILFlBQUcsQ0FBQ1ksSUFBSSxHQUFHZ0csUUFBUTtRQUNqQ00sbUJBQW1CbEgsWUFBRyxDQUFDWSxJQUFJLEdBQUdnRyxRQUFRO1FBQ3RDN0QsVUFBVS9DLFlBQUcsQ0FBQ1ksSUFBSSxHQUFHZ0MsUUFBUTtJQUMvQixHQUNDbEIsT0FBTztBQUNaO0FBRU8sTUFBTTNDLE9BQU9MLFVBQVV3QixJQUFJLENBQUM7SUFDakM4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0lBQzNCSyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxRQUFRcUIsUUFBUTtJQUN6Q1osT0FBT3ZELGdCQUFnQnlCLElBQUksQ0FBQztRQUMxQlEsWUFBWWxDLHlCQUF5QjBCLElBQUksQ0FBQztZQUN4Q21ELE9BQU9qRCxnQ0FBZTtZQUN0QmtELE9BQU9sRCxnQ0FBZTtZQUN0Qm1ELFlBQVl2RCxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNqQyxnQ0FBZTtZQUM3Q29ELGFBQWF4RCxZQUFHLENBQUN6QixLQUFLLEdBQUc4RCxLQUFLLENBQUNqQyxnQ0FBZTtRQUNoRDtRQUNBckIsTUFBTWlCLFlBQUcsQ0FBQ0MsTUFBTSxDQUFDO1lBQ2ZrSCxlQUFlbkgsWUFBRyxDQUFDUyxNQUFNO1lBQ3pCMkcsU0FBU3BILFlBQUcsQ0FBQ2pCLElBQUk7WUFDakJzSSxTQUFTckgsWUFBRyxDQUFDakIsSUFBSTtZQUNqQnVJLFNBQVN0SCxZQUFHLENBQUNqQixJQUFJO1lBQ2pCd0ksU0FBU3ZILFlBQUcsQ0FBQ2pCLElBQUk7WUFDakJ5SSxjQUFjeEgsWUFBRyxDQUFDWixNQUFNO1lBQ3hCcUksV0FBV3pILFlBQUcsQ0FBQ0MsTUFBTSxHQUFHeUIsT0FBTztZQUMvQmdHLGtCQUFrQjFILFlBQUcsQ0FBQ1MsTUFBTTtZQUM1QmtILFlBQVkzSCxZQUFHLENBQUNTLE1BQU07WUFDdEJtSCxlQUFlNUgsWUFBRyxDQUFDWixNQUFNO1FBQzNCO1FBQ0FxRSxhQUFhekQsWUFBRyxDQUFDUyxNQUFNO0lBQ3pCO0lBQ0FrRCxjQUFjM0QsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDUyxNQUFNLElBQUlULFlBQUcsQ0FBQ1ksSUFBSTtBQUM3RDtBQUVPLE1BQU1kLEtBQUtFLFlBQUcsQ0FBQ0MsTUFBTSxHQUFHQyxJQUFJLENBQUM7SUFDbEM4QyxNQUFNaEQsWUFBRyxDQUFDUyxNQUFNLEdBQUdtQyxRQUFRO0lBQzNCSyxNQUFNakQsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQyxNQUFNcUIsUUFBUTtJQUN2Q1osT0FBT2hDLFlBQUcsQ0FDUEMsTUFBTSxHQUNOQyxJQUFJLENBQUM7UUFDSlEsWUFBWVYsWUFBRyxDQUNaQyxNQUFNLEdBQ05DLElBQUksQ0FBQztZQUNKQyxNQUFNQyxnQ0FBZTtZQUNyQkMsT0FBT0QsZ0NBQWU7UUFDeEIsR0FDQ0csT0FBTyxDQUFDLENBQUM7UUFDWkksV0FBV1gsWUFBRyxDQUFDWSxJQUFJO1FBQ25CVSxVQUFVdEIsWUFBRyxDQUFDUyxNQUFNLEdBQUdjLEtBQUssQ0FBQztRQUM3QkksT0FBTzNCLFlBQUcsQ0FBQ1MsTUFBTTtJQUNuQixHQUNDRixPQUFPO0lBQ1YwQixRQUFRakMsWUFBRyxDQUFDQyxNQUFNLEdBQUdlLE9BQU8sQ0FBQ2hCLFlBQUcsQ0FBQ1MsTUFBTSxJQUFJVCxZQUFHLENBQUNrQyxHQUFHO0lBQ2xEUSxPQUFPMUMsWUFBRyxDQUFDYyxZQUFZLEdBQUdDLEdBQUcsQ0FBQ2YsWUFBRyxDQUFDUyxNQUFNLElBQUlULFlBQUcsQ0FBQ0MsTUFBTSxHQUFHZSxPQUFPLENBQUNoQixZQUFHLENBQUNTLE1BQU0sSUFBSTtRQUFDVCxZQUFHLENBQUNTLE1BQU07S0FBRztBQUMvRjtBQUVBLE1BQU1vSCxjQUFjN0gsWUFBRyxDQUNwQmMsWUFBWSxHQUNaQyxHQUFHLENBQ0ZuQixNQUNBUixRQUNBUyxVQUNBYixPQUNBSCxNQUNBTSxNQUNBTyxRQUNBVCxPQUNBVixPQUNBa0IsS0FDQVgsYUFDQWEsTUFDQUwsT0FDQUMsY0FDQVgsVUFDQW1CLFFBQ0FQLFVBQ0FiLFFBQ0FJLE1BQ0FNLE9BQ0FTLElBRURnSSxFQUFFLENBQUM7TUFFTixXQUFlRCJ9
|
|
574
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3NjaGVtYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgam9pIGZyb20gJ2pvaSdcblxuaW1wb3J0IHsgY29tcG9uZW50U2NoZW1hIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NoYXJlZC9jb21wb25lbnRTY2hlbWEnXG5cbmV4cG9ydCBjb25zdCBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMgPSBqb2lcbiAgLm9iamVjdCgpXG4gIC5rZXlzKHtcbiAgICBDZWxsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgRmllbGQ6IGNvbXBvbmVudFNjaGVtYSxcbiAgICBGaWx0ZXI6IGNvbXBvbmVudFNjaGVtYSxcbiAgfSlcbiAgLmRlZmF1bHQoe30pXG5cbmV4cG9ydCBjb25zdCBiYXNlQWRtaW5GaWVsZHMgPSBqb2kub2JqZWN0KCkua2V5cyh7XG4gIGNsYXNzTmFtZTogam9pLnN0cmluZygpLFxuICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMsXG4gIGNvbmRpdGlvbjogam9pLmZ1bmMoKSxcbiAgZGVzY3JpcHRpb246IGpvaVxuICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgZGlzYWJsZUJ1bGtFZGl0OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBkaXNhYmxlZDogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaGlkZGVuOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpbml0Q29sbGFwc2VkOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBwb3NpdGlvbjogam9pLnN0cmluZygpLnZhbGlkKCdzaWRlYmFyJyksXG4gIHJlYWRPbmx5OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzdHlsZTogam9pLm9iamVjdCgpLnVua25vd24oKSxcbiAgd2lkdGg6IGpvaS5zdHJpbmcoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBiYXNlRmllbGQgPSBqb2lcbiAgLm9iamVjdCgpXG4gIC5rZXlzKHtcbiAgICBhY2Nlc3M6IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICAgIGNyZWF0ZTogam9pLmZ1bmMoKSxcbiAgICAgIHJlYWQ6IGpvaS5mdW5jKCksXG4gICAgICB1cGRhdGU6IGpvaS5mdW5jKCksXG4gICAgfSksXG4gICAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5kZWZhdWx0KCksXG4gICAgY3VzdG9tOiBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIGpvaS5hbnkoKSksXG4gICAgaGlkZGVuOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGhvb2tzOiBqb2lcbiAgICAgIC5vYmplY3QoKVxuICAgICAgLmtleXMoe1xuICAgICAgICBhZnRlckNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGFmdGVyUmVhZDogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGJlZm9yZUNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGJlZm9yZVZhbGlkYXRlOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKS5kZWZhdWx0KFtdKSxcbiAgICAgIH0pXG4gICAgICAuZGVmYXVsdCgpLFxuICAgIGluZGV4OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGxhYmVsOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSwgam9pLnN0cmluZygpLCBqb2kudmFsaWQoZmFsc2UpKSxcbiAgICBsb2NhbGl6ZWQ6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcmVxdWlyZWQ6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgc2F2ZVRvSldUOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5ib29sZWFuKCksIGpvaS5zdHJpbmcoKSkuZGVmYXVsdChmYWxzZSksXG4gICAgdW5pcXVlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZhbGlkYXRlOiBqb2kuZnVuYygpLFxuICB9KVxuICAuZGVmYXVsdCgpXG5cbmV4cG9ydCBjb25zdCBpZEZpZWxkID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2lkJyksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndGV4dCcsICdudW1iZXInKSxcbiAgbG9jYWxpemVkOiBqb2kuaW52YWxpZCh0cnVlKSxcbiAgcmVxdWlyZWQ6IGpvaS5ub3QoZmFsc2UsIDApLmRlZmF1bHQodHJ1ZSksXG59KVxuXG5leHBvcnQgY29uc3QgdGV4dCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndGV4dCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYXV0b0NvbXBsZXRlOiBqb2kuc3RyaW5nKCksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gICAgcGxhY2Vob2xkZXI6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pLCBqb2kuc3RyaW5nKCkpLFxuICAgIHJ0bDogam9pLmJvb2xlYW4oKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBtYXhMZW5ndGg6IGpvaS5udW1iZXIoKSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIG1pbkxlbmd0aDogam9pLm51bWJlcigpLFxuICBtaW5Sb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbn0pXG5cbmV4cG9ydCBjb25zdCBudW1iZXIgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ251bWJlcicpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYXV0b0NvbXBsZXRlOiBqb2kuc3RyaW5nKCksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2lcbiAgICAgICAgLmFycmF5KClcbiAgICAgICAgLml0ZW1zKGNvbXBvbmVudFNjaGVtYSlcbiAgICAgICAgLndoZW4oJ2hhc01hbnknLCB7IG5vdDogdHJ1ZSwgb3RoZXJ3aXNlOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gICAgICBiZWZvcmVJbnB1dDogam9pXG4gICAgICAgIC5hcnJheSgpXG4gICAgICAgIC5pdGVtcyhjb21wb25lbnRTY2hlbWEpXG4gICAgICAgIC53aGVuKCdoYXNNYW55JywgeyBub3Q6IHRydWUsIG90aGVyd2lzZTogam9pLmZvcmJpZGRlbigpIH0pLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gICAgc3RlcDogam9pLm51bWJlcigpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2lcbiAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAudHJ5KFxuICAgICAgam9pLm51bWJlcigpLFxuICAgICAgam9pLmZ1bmMoKSxcbiAgICAgIGpvaS5hcnJheSgpLndoZW4oJ2hhc01hbnknLCB7IG5vdDogdHJ1ZSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pLFxuICAgICksXG4gIGhhc01hbnk6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIG1heDogam9pLm51bWJlcigpLFxuICBtYXhSb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgbWluOiBqb2kubnVtYmVyKCksXG4gIG1pblJvd3M6IGpvaS5udW1iZXIoKS53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pLFxufSlcblxuZXhwb3J0IGNvbnN0IHRleHRhcmVhID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCd0ZXh0YXJlYScpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gICAgcGxhY2Vob2xkZXI6IGpvaS5zdHJpbmcoKSxcbiAgICByb3dzOiBqb2kubnVtYmVyKCksXG4gICAgcnRsOiBqb2kuYm9vbGVhbigpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgam9pLmZ1bmMoKSksXG4gIG1heExlbmd0aDogam9pLm51bWJlcigpLFxuICBtaW5MZW5ndGg6IGpvaS5udW1iZXIoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBlbWFpbCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnZW1haWwnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGF1dG9Db21wbGV0ZTogam9pLnN0cmluZygpLFxuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbiAgbWF4TGVuZ3RoOiBqb2kubnVtYmVyKCksXG4gIG1pbkxlbmd0aDogam9pLm51bWJlcigpLFxufSlcblxuZXhwb3J0IGNvbnN0IGNvZGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2NvZGUnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGVkaXRvck9wdGlvbnM6IGpvaS5vYmplY3QoKS51bmtub3duKCksIC8vIEVkaXRvclsnb3B0aW9ucyddIEBtb25hY28tZWRpdG9yL3JlYWN0XG4gICAgbGFuZ3VhZ2U6IGpvaS5zdHJpbmcoKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxufSlcblxuZXhwb3J0IGNvbnN0IGpzb24gPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2pzb24nKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGVkaXRvck9wdGlvbnM6IGpvaS5vYmplY3QoKS51bmtub3duKCksIC8vIEVkaXRvclsnb3B0aW9ucyddIEBtb25hY28tZWRpdG9yL3JlYWN0XG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCksIGpvaS5vYmplY3QoKSksXG4gIGpzb25TY2hlbWE6IGpvaS5vYmplY3QoKS51bmtub3duKCksXG59KVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdzZWxlY3QnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGlzQ2xlYXJhYmxlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGlzU29ydGFibGU6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIH0pLFxuICBkYk5hbWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbiAgZGVmYXVsdFZhbHVlOiBqb2lcbiAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAudHJ5KGpvaS5zdHJpbmcoKS5hbGxvdygnJyksIGpvaS5hcnJheSgpLml0ZW1zKGpvaS5zdHJpbmcoKS5hbGxvdygnJykpLCBqb2kuZnVuYygpKSxcbiAgZW51bU5hbWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbiAgaGFzTWFueTogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgb3B0aW9uczogam9pXG4gICAgLmFycmF5KClcbiAgICAubWluKDEpXG4gICAgLml0ZW1zKFxuICAgICAgam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICAgICAgam9pLnN0cmluZygpLFxuICAgICAgICBqb2kub2JqZWN0KHtcbiAgICAgICAgICBsYWJlbDogam9pXG4gICAgICAgICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgICAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gICAgICAgICAgdmFsdWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLmFsbG93KCcnKSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIClcbiAgICAucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCByYWRpbyA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgncmFkaW8nKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGxheW91dDogam9pLnN0cmluZygpLnZhbGlkKCd2ZXJ0aWNhbCcsICdob3Jpem9udGFsJyksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLmFsbG93KCcnKSwgam9pLmZ1bmMoKSksXG4gIGVudW1OYW1lOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgam9pLmZ1bmMoKSksXG4gIG9wdGlvbnM6IGpvaVxuICAgIC5hcnJheSgpXG4gICAgLm1pbigxKVxuICAgIC5pdGVtcyhcbiAgICAgIGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoXG4gICAgICAgIGpvaS5zdHJpbmcoKSxcbiAgICAgICAgam9pLm9iamVjdCh7XG4gICAgICAgICAgbGFiZWw6IGpvaVxuICAgICAgICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAgICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpXG4gICAgICAgICAgICAucmVxdWlyZWQoKSxcbiAgICAgICAgICB2YWx1ZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCkuYWxsb3coJycpLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKVxuICAgIC5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHJvdyA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyb3cnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmRlZmF1bHQoKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLFxufSlcblxuZXhwb3J0IGNvbnN0IGNvbGxhcHNpYmxlID0gYmFzZUZpZWxkLmtleXMoe1xuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2NvbGxhcHNpYmxlJykucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5kZWZhdWx0KCksXG4gIGZpZWxkczogam9pLmFycmF5KCkuaXRlbXMoam9pLmxpbmsoJyNmaWVsZCcpKSxcbiAgbGFiZWw6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBjb21wb25lbnRTY2hlbWEpLFxufSlcblxuY29uc3QgdGFiID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkud2hlbignbG9jYWxpemVkJywgeyBpczogam9pLmV4aXN0KCksIHRoZW46IGpvaS5yZXF1aXJlZCgpIH0pLFxuICBkZXNjcmlwdGlvbjogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGNvbXBvbmVudFNjaGVtYSksXG4gIGZpZWxkczogam9pLmFycmF5KCkuaXRlbXMoam9pLmxpbmsoJyNmaWVsZCcpKS5yZXF1aXJlZCgpLFxuICBpbnRlcmZhY2VOYW1lOiBqb2kuc3RyaW5nKCkud2hlbignbmFtZScsIHsgbm90OiBqb2kuZXhpc3QoKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pLFxuICBsYWJlbDogam9pXG4gICAgLmFsdGVybmF0aXZlcygpXG4gICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKVxuICAgIC53aGVuKCduYW1lJywgeyBpczogam9pLm5vdCgpLCB0aGVuOiBqb2kucmVxdWlyZWQoKSB9KSxcbiAgbG9jYWxpemVkOiBqb2kuYm9vbGVhbigpLFxuICBzYXZlVG9KV1Q6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmJvb2xlYW4oKSwgam9pLnN0cmluZygpKSxcbn0pXG5cbmV4cG9ydCBjb25zdCB0YWJzID0gYmFzZUZpZWxkLmtleXMoe1xuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3RhYnMnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGRlc2NyaXB0aW9uOiBqb2kuZm9yYmlkZGVuKCksXG4gIH0pLFxuICBmaWVsZHM6IGpvaS5mb3JiaWRkZW4oKSxcbiAgbG9jYWxpemVkOiBqb2kuZm9yYmlkZGVuKCksXG4gIHRhYnM6IGpvaS5hcnJheSgpLml0ZW1zKHRhYikucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBncm91cCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnZ3JvdXAnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGhpZGVHdXR0ZXI6IGpvaS5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kub2JqZWN0KCksIGpvaS5mdW5jKCkpLFxuICBmaWVsZHM6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5saW5rKCcjZmllbGQnKSksXG4gIGludGVyZmFjZU5hbWU6IGpvaS5zdHJpbmcoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBhcnJheSA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnYXJyYXknKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzXG4gICAgLmtleXMoe1xuICAgICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzXG4gICAgICAgIC5rZXlzKHtcbiAgICAgICAgICBSb3dMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgICB9KVxuICAgICAgICAuZGVmYXVsdCh7fSksXG4gICAgfSlcbiAgICAuZGVmYXVsdCh7fSksXG4gIGRiTmFtZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm9iamVjdCgpKSwgam9pLmZ1bmMoKSksXG4gIGZpZWxkczogam9pLmFycmF5KCkuaXRlbXMoam9pLmxpbmsoJyNmaWVsZCcpKS5yZXF1aXJlZCgpLFxuICBpbnRlcmZhY2VOYW1lOiBqb2kuc3RyaW5nKCksXG4gIGxhYmVsczogam9pLm9iamVjdCh7XG4gICAgcGx1cmFsOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICBzaW5ndWxhcjogam9pXG4gICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gIH0pLFxuICBtYXhSb3dzOiBqb2kubnVtYmVyKCksXG4gIG1pblJvd3M6IGpvaS5udW1iZXIoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCB1cGxvYWQgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3VwbG9hZCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgfSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLm9iamVjdCgpLCBqb2kuZnVuYygpKSxcbiAgZmlsdGVyT3B0aW9uczogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kub2JqZWN0KCksIGpvaS5mdW5jKCkpLFxuICBtYXhEZXB0aDogam9pLm51bWJlcigpLFxuICByZWxhdGlvblRvOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBjaGVja2JveCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnY2hlY2tib3gnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5ib29sZWFuKCksIGpvaS5mdW5jKCkpLFxufSlcblxuZXhwb3J0IGNvbnN0IHBvaW50ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdwb2ludCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm51bWJlcigpKS5tYXgoMikubWluKDIpLCBqb2kuZnVuYygpKSxcbn0pXG5cbmV4cG9ydCBjb25zdCByZWxhdGlvbnNoaXAgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3JlbGF0aW9uc2hpcCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYWxsb3dDcmVhdGU6IGpvaS5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICB9KSxcbiAgICBpc1NvcnRhYmxlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHNvcnRPcHRpb25zOiBqb2kuYWx0ZXJuYXRpdmVzKCkuY29uZGl0aW9uYWwoam9pLnJlZignLi4ucmVsYXRpb25UbycpLCB7XG4gICAgICBpczogam9pLnN0cmluZygpLFxuICAgICAgb3RoZXJ3aXNlOiBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIGpvaS5zdHJpbmcoKSksXG4gICAgICB0aGVuOiBqb2kuc3RyaW5nKCksXG4gICAgfSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmZ1bmMoKSksXG4gIGZpbHRlck9wdGlvbnM6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLm9iamVjdCgpLCBqb2kuZnVuYygpKSxcbiAgaGFzTWFueTogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgbWF4OiBqb2lcbiAgICAubnVtYmVyKClcbiAgICAud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KVxuICAgIC53YXJuaW5nKCdkZXByZWNhdGVkJywgeyBtZXNzYWdlOiAnVXNlIG1heFJvd3MgaW5zdGVhZC4nIH0pLFxuICBtYXhEZXB0aDogam9pLm51bWJlcigpLFxuICBtYXhSb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgbWluOiBqb2lcbiAgICAubnVtYmVyKClcbiAgICAud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KVxuICAgIC53YXJuaW5nKCdkZXByZWNhdGVkJywgeyBtZXNzYWdlOiAnVXNlIG1pblJvd3MgaW5zdGVhZC4nIH0pLFxuICBtaW5Sb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgcmVsYXRpb25Ubzogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSwgam9pLmFycmF5KCkuaXRlbXMoam9pLnN0cmluZygpKSksXG59KVxuXG5leHBvcnQgY29uc3QgYmxvY2tzID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdibG9ja3MnKS5yZXF1aXJlZCgpLFxuICBibG9ja3M6IGpvaVxuICAgIC5hcnJheSgpXG4gICAgLml0ZW1zKFxuICAgICAgam9pLm9iamVjdCh7XG4gICAgICAgIHNsdWc6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBjdXN0b206IGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgam9pLmFueSgpKSxcbiAgICAgICAgZGJOYW1lOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgam9pLmZ1bmMoKSksXG4gICAgICAgIGZpZWxkczogam9pLmFycmF5KCkuaXRlbXMoam9pLmxpbmsoJyNmaWVsZCcpKSxcbiAgICAgICAgZ3JhcGhRTDogam9pLm9iamVjdCgpLmtleXMoe1xuICAgICAgICAgIHNpbmd1bGFyTmFtZTogam9pLnN0cmluZygpLFxuICAgICAgICB9KSxcbiAgICAgICAgaW1hZ2VBbHRUZXh0OiBqb2kuc3RyaW5nKCksXG4gICAgICAgIGltYWdlVVJMOiBqb2kuc3RyaW5nKCksXG4gICAgICAgIGludGVyZmFjZU5hbWU6IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgbGFiZWxzOiBqb2kub2JqZWN0KHtcbiAgICAgICAgICBwbHVyYWw6IGpvaVxuICAgICAgICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAgICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICAgICAgICAgIHNpbmd1bGFyOiBqb2lcbiAgICAgICAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICApXG4gICAgLnJlcXVpcmVkKCksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYXJyYXkoKS5pdGVtcyhqb2kub2JqZWN0KCkpLCBqb2kuZnVuYygpKSxcbiAgbGFiZWxzOiBqb2kub2JqZWN0KHtcbiAgICBwbHVyYWw6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICAgIHNpbmd1bGFyOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgfSksXG4gIG1heFJvd3M6IGpvaS5udW1iZXIoKSxcbiAgbWluUm93czogam9pLm51bWJlcigpLFxufSlcblxuZXhwb3J0IGNvbnN0IHJpY2hUZXh0ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyaWNoVGV4dCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgfSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm9iamVjdCgpKSwgam9pLmZ1bmMoKSwgam9pLm9iamVjdCgpKSxcbiAgZWRpdG9yOiBqb2lcbiAgICAub2JqZWN0KClcbiAgICAua2V5cyh7XG4gICAgICBDZWxsQ29tcG9uZW50OiBjb21wb25lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgICAgIEZpZWxkQ29tcG9uZW50OiBjb21wb25lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgICAgIExhenlDZWxsQ29tcG9uZW50OiBqb2kuZnVuYygpLm9wdGlvbmFsKCksXG4gICAgICBMYXp5RmllbGRDb21wb25lbnQ6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIGFmdGVyUmVhZFByb21pc2U6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIG91dHB1dFNjaGVtYTogam9pLmZ1bmMoKS5vcHRpb25hbCgpLFxuICAgICAgcG9wdWxhdGlvblByb21pc2U6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIHZhbGlkYXRlOiBqb2kuZnVuYygpLnJlcXVpcmVkKCksXG4gICAgfSlcbiAgICAudW5rbm93bigpLFxufSlcblxuZXhwb3J0IGNvbnN0IGRhdGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2RhdGUnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICAgIGRhdGU6IGpvaS5vYmplY3Qoe1xuICAgICAgZGlzcGxheUZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgbWF4RGF0ZTogam9pLmRhdGUoKSxcbiAgICAgIG1heFRpbWU6IGpvaS5kYXRlKCksXG4gICAgICBtaW5EYXRlOiBqb2kuZGF0ZSgpLFxuICAgICAgbWluVGltZTogam9pLmRhdGUoKSxcbiAgICAgIG1vbnRoc1RvU2hvdzogam9pLm51bWJlcigpLFxuICAgICAgb3ZlcnJpZGVzOiBqb2kub2JqZWN0KCkudW5rbm93bigpLFxuICAgICAgcGlja2VyQXBwZWFyYW5jZTogam9pLnN0cmluZygpLFxuICAgICAgdGltZUZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgdGltZUludGVydmFsczogam9pLm51bWJlcigpLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbn0pXG5cbmV4cG9ydCBjb25zdCB1aSA9IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndWknKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogam9pXG4gICAgLm9iamVjdCgpXG4gICAgLmtleXMoe1xuICAgICAgY29tcG9uZW50czogam9pXG4gICAgICAgIC5vYmplY3QoKVxuICAgICAgICAua2V5cyh7XG4gICAgICAgICAgQ2VsbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgICAgIEZpZWxkOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICAgIH0pXG4gICAgICAgIC5kZWZhdWx0KHt9KSxcbiAgICAgIGNvbmRpdGlvbjogam9pLmZ1bmMoKSxcbiAgICAgIHBvc2l0aW9uOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3NpZGViYXInKSxcbiAgICAgIHdpZHRoOiBqb2kuc3RyaW5nKCksXG4gICAgfSlcbiAgICAuZGVmYXVsdCgpLFxuICBjdXN0b206IGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgam9pLmFueSgpKSxcbiAgbGFiZWw6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG59KVxuXG5jb25zdCBmaWVsZFNjaGVtYSA9IGpvaVxuICAuYWx0ZXJuYXRpdmVzKClcbiAgLnRyeShcbiAgICB0ZXh0LFxuICAgIG51bWJlcixcbiAgICB0ZXh0YXJlYSxcbiAgICBlbWFpbCxcbiAgICBjb2RlLFxuICAgIGpzb24sXG4gICAgc2VsZWN0LFxuICAgIGdyb3VwLFxuICAgIGFycmF5LFxuICAgIHJvdyxcbiAgICBjb2xsYXBzaWJsZSxcbiAgICB0YWJzLFxuICAgIHJhZGlvLFxuICAgIHJlbGF0aW9uc2hpcCxcbiAgICBjaGVja2JveCxcbiAgICB1cGxvYWQsXG4gICAgcmljaFRleHQsXG4gICAgYmxvY2tzLFxuICAgIGRhdGUsXG4gICAgcG9pbnQsXG4gICAgdWksXG4gIClcbiAgLmlkKCdmaWVsZCcpXG5cbmV4cG9ydCBkZWZhdWx0IGZpZWxkU2NoZW1hXG4iXSwibmFtZXMiOlsiYXJyYXkiLCJiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMiLCJiYXNlQWRtaW5GaWVsZHMiLCJiYXNlRmllbGQiLCJibG9ja3MiLCJjaGVja2JveCIsImNvZGUiLCJjb2xsYXBzaWJsZSIsImRhdGUiLCJlbWFpbCIsImdyb3VwIiwiaWRGaWVsZCIsImpzb24iLCJudW1iZXIiLCJwb2ludCIsInJhZGlvIiwicmVsYXRpb25zaGlwIiwicmljaFRleHQiLCJyb3ciLCJzZWxlY3QiLCJ0YWJzIiwidGV4dCIsInRleHRhcmVhIiwidWkiLCJ1cGxvYWQiLCJqb2kiLCJvYmplY3QiLCJrZXlzIiwiQ2VsbCIsImNvbXBvbmVudFNjaGVtYSIsIkZpZWxkIiwiRmlsdGVyIiwiZGVmYXVsdCIsImNsYXNzTmFtZSIsInN0cmluZyIsImNvbXBvbmVudHMiLCJjb25kaXRpb24iLCJmdW5jIiwiZGVzY3JpcHRpb24iLCJhbHRlcm5hdGl2ZXMiLCJ0cnkiLCJwYXR0ZXJuIiwiZGlzYWJsZUJ1bGtFZGl0IiwiYm9vbGVhbiIsImRpc2FibGVkIiwiaGlkZGVuIiwiaW5pdENvbGxhcHNlZCIsInBvc2l0aW9uIiwidmFsaWQiLCJyZWFkT25seSIsInN0eWxlIiwidW5rbm93biIsIndpZHRoIiwiYWNjZXNzIiwiY3JlYXRlIiwicmVhZCIsInVwZGF0ZSIsImFkbWluIiwiY3VzdG9tIiwiYW55IiwiaG9va3MiLCJhZnRlckNoYW5nZSIsIml0ZW1zIiwiYWZ0ZXJSZWFkIiwiYmVmb3JlQ2hhbmdlIiwiYmVmb3JlVmFsaWRhdGUiLCJpbmRleCIsImxhYmVsIiwibG9jYWxpemVkIiwicmVxdWlyZWQiLCJzYXZlVG9KV1QiLCJ1bmlxdWUiLCJ2YWxpZGF0ZSIsIm5hbWUiLCJ0eXBlIiwiaW52YWxpZCIsIm5vdCIsImF1dG9Db21wbGV0ZSIsIkVycm9yIiwiTGFiZWwiLCJhZnRlcklucHV0IiwiYmVmb3JlSW5wdXQiLCJwbGFjZWhvbGRlciIsInJ0bCIsImRlZmF1bHRWYWx1ZSIsImhhc01hbnkiLCJtYXhMZW5ndGgiLCJtYXhSb3dzIiwid2hlbiIsImlzIiwidGhlbiIsImZvcmJpZGRlbiIsIm1pbkxlbmd0aCIsIm1pblJvd3MiLCJvdGhlcndpc2UiLCJzdGVwIiwibWF4IiwibWluIiwicm93cyIsImVkaXRvck9wdGlvbnMiLCJsYW5ndWFnZSIsImpzb25TY2hlbWEiLCJpc0NsZWFyYWJsZSIsImlzU29ydGFibGUiLCJkYk5hbWUiLCJhbGxvdyIsImVudW1OYW1lIiwib3B0aW9ucyIsInZhbHVlIiwibGF5b3V0IiwiZmllbGRzIiwibGluayIsInRhYiIsImV4aXN0IiwiaW50ZXJmYWNlTmFtZSIsImhpZGVHdXR0ZXIiLCJSb3dMYWJlbCIsImxhYmVscyIsInBsdXJhbCIsInNpbmd1bGFyIiwiZmlsdGVyT3B0aW9ucyIsIm1heERlcHRoIiwicmVsYXRpb25UbyIsImFsbG93Q3JlYXRlIiwic29ydE9wdGlvbnMiLCJjb25kaXRpb25hbCIsInJlZiIsIndhcm5pbmciLCJtZXNzYWdlIiwic2x1ZyIsImdyYXBoUUwiLCJzaW5ndWxhck5hbWUiLCJpbWFnZUFsdFRleHQiLCJpbWFnZVVSTCIsImVkaXRvciIsIkNlbGxDb21wb25lbnQiLCJvcHRpb25hbCIsIkZpZWxkQ29tcG9uZW50IiwiTGF6eUNlbGxDb21wb25lbnQiLCJMYXp5RmllbGRDb21wb25lbnQiLCJhZnRlclJlYWRQcm9taXNlIiwib3V0cHV0U2NoZW1hIiwicG9wdWxhdGlvblByb21pc2UiLCJkaXNwbGF5Rm9ybWF0IiwibWF4RGF0ZSIsIm1heFRpbWUiLCJtaW5EYXRlIiwibWluVGltZSIsIm1vbnRoc1RvU2hvdyIsIm92ZXJyaWRlcyIsInBpY2tlckFwcGVhcmFuY2UiLCJ0aW1lRm9ybWF0IiwidGltZUludGVydmFscyIsImZpZWxkU2NoZW1hIiwiaWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBK1NhQSxLQUFLO2VBQUxBOztJQTNTQUMsd0JBQXdCO2VBQXhCQTs7SUFTQUMsZUFBZTtlQUFmQTs7SUFpQkFDLFNBQVM7ZUFBVEE7O0lBeVhBQyxNQUFNO2VBQU5BOztJQTdEQUMsUUFBUTtlQUFSQTs7SUF0TEFDLElBQUk7ZUFBSkE7O0lBa0dBQyxXQUFXO2VBQVhBOztJQW1OQUMsSUFBSTtlQUFKQTs7SUE0RWIsT0FBMEI7ZUFBMUI7O0lBblphQyxLQUFL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
|
|
@@ -11,6 +11,7 @@ import type { RichTextAdapter } from '../../admin/components/forms/field-types/R
|
|
|
11
11
|
import type { User } from '../../auth';
|
|
12
12
|
import type { SanitizedCollectionConfig, TypeWithID } from '../../collections/config/types';
|
|
13
13
|
import type { SanitizedConfig } from '../../config/types';
|
|
14
|
+
import type { DBIdentifierName } from '../../database/types';
|
|
14
15
|
import type { PayloadRequest, RequestContext } from '../../express/types';
|
|
15
16
|
import type { SanitizedGlobalConfig } from '../../globals/config/types';
|
|
16
17
|
import type { Payload } from '../../payload';
|
|
@@ -65,7 +66,7 @@ export type FieldAccess<T extends TypeWithID = any, P = any, U = any> = (args: {
|
|
|
65
66
|
*/
|
|
66
67
|
siblingData?: Partial<P>;
|
|
67
68
|
}) => Promise<boolean> | boolean;
|
|
68
|
-
export type Condition<T extends TypeWithID = any, P = any> = (data: Partial<T>, siblingData: Partial<P>, { user }: {
|
|
69
|
+
export type Condition<T extends TypeWithID = any, P = any> = (data: Partial<T>, siblingData: Partial<P>, { user, }: {
|
|
69
70
|
user: User;
|
|
70
71
|
}) => boolean;
|
|
71
72
|
export type FilterOptionsProps<T = any> = {
|
|
@@ -374,6 +375,7 @@ type JSONAdmin = Admin & {
|
|
|
374
375
|
};
|
|
375
376
|
export type JSONField = Omit<FieldBase, 'admin'> & {
|
|
376
377
|
admin?: JSONAdmin;
|
|
378
|
+
jsonSchema?: Record<string, unknown>;
|
|
377
379
|
type: 'json';
|
|
378
380
|
};
|
|
379
381
|
export type SelectField = FieldBase & {
|
|
@@ -385,6 +387,14 @@ export type SelectField = FieldBase & {
|
|
|
385
387
|
isClearable?: boolean;
|
|
386
388
|
isSortable?: boolean;
|
|
387
389
|
};
|
|
390
|
+
/**
|
|
391
|
+
* Customize the SQL table name
|
|
392
|
+
*/
|
|
393
|
+
dbName?: DBIdentifierName;
|
|
394
|
+
/**
|
|
395
|
+
* Customize the DB enum name
|
|
396
|
+
*/
|
|
397
|
+
enumName?: DBIdentifierName;
|
|
388
398
|
hasMany?: boolean;
|
|
389
399
|
options: Option[];
|
|
390
400
|
type: 'select';
|
|
@@ -458,6 +468,9 @@ export type RichTextField<Value extends object = any, AdapterProps = any, ExtraP
|
|
|
458
468
|
editor?: RichTextAdapter<Value, AdapterProps, AdapterProps>;
|
|
459
469
|
type: 'richText';
|
|
460
470
|
} & ExtraProperties;
|
|
471
|
+
export type RichTextFieldRequiredEditor<Value extends object = any, AdapterProps = any, ExtraProperties = object> = Omit<RichTextField<Value, AdapterProps, ExtraProperties>, 'editor'> & {
|
|
472
|
+
editor: RichTextAdapter<Value, AdapterProps, ExtraProperties>;
|
|
473
|
+
};
|
|
461
474
|
export type ArrayField = FieldBase & {
|
|
462
475
|
admin?: Admin & {
|
|
463
476
|
components?: {
|
|
@@ -465,6 +478,10 @@ export type ArrayField = FieldBase & {
|
|
|
465
478
|
} & Admin['components'];
|
|
466
479
|
initCollapsed?: boolean | false;
|
|
467
480
|
};
|
|
481
|
+
/**
|
|
482
|
+
* Customize the SQL table name
|
|
483
|
+
*/
|
|
484
|
+
dbName?: DBIdentifierName;
|
|
468
485
|
fields: Field[];
|
|
469
486
|
/** Customize generated GraphQL and Typescript schema names.
|
|
470
487
|
* By default it is bound to the collection.
|
|
@@ -486,12 +503,24 @@ export type RadioField = FieldBase & {
|
|
|
486
503
|
};
|
|
487
504
|
layout?: 'horizontal' | 'vertical';
|
|
488
505
|
};
|
|
506
|
+
/**
|
|
507
|
+
* Customize the SQL table name
|
|
508
|
+
*/
|
|
509
|
+
dbName?: DBIdentifierName;
|
|
510
|
+
/**
|
|
511
|
+
* Customize the DB enum name
|
|
512
|
+
*/
|
|
513
|
+
enumName?: DBIdentifierName;
|
|
489
514
|
options: Option[];
|
|
490
515
|
type: 'radio';
|
|
491
516
|
};
|
|
492
517
|
export type Block = {
|
|
493
518
|
/** Extension point to add your custom data. */
|
|
494
519
|
custom?: Record<string, any>;
|
|
520
|
+
/**
|
|
521
|
+
* Customize the SQL table name
|
|
522
|
+
*/
|
|
523
|
+
dbName?: DBIdentifierName;
|
|
495
524
|
fields: Field[];
|
|
496
525
|
/** @deprecated - please migrate to the interfaceName property instead. */
|
|
497
526
|
graphQL?: {
|
|
@@ -524,6 +553,7 @@ export type PointField = FieldBase & {
|
|
|
524
553
|
type: 'point';
|
|
525
554
|
};
|
|
526
555
|
export type Field = ArrayField | BlockField | CheckboxField | CodeField | CollapsibleField | DateField | EmailField | GroupField | JSONField | NumberField | PointField | RadioField | RelationshipField | RichTextField | RowField | SelectField | TabsField | TextField | TextareaField | UIField | UploadField;
|
|
556
|
+
export type FieldWithRichTextRequiredEditor = Exclude<Field, RichTextField> | RichTextFieldRequiredEditor;
|
|
527
557
|
export type FieldAffectingData = ArrayField | BlockField | CheckboxField | CodeField | DateField | EmailField | GroupField | JSONField | NumberField | PointField | RadioField | RelationshipField | RichTextField | SelectField | TabAsField | TextField | TextareaField | UploadField;
|
|
528
558
|
export type NonPresentationalField = ArrayField | BlockField | CheckboxField | CodeField | CollapsibleField | DateField | EmailField | GroupField | JSONField | NumberField | PointField | RadioField | RelationshipField | RichTextField | RowField | SelectField | TabsField | TextField | TextareaField | UploadField;
|
|
529
559
|
export type FieldWithPath = Field & {
|