sonamu 0.13.1 → 0.13.3
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/dist/api/decorators.d.ts +2 -3
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +1 -1
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +5 -5
- package/dist/auth/plugins/entity-definitions/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/two-factor.js +19 -1
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.js +4 -2
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +8 -3
- package/dist/database/puri.d.ts +8 -3
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +120 -15
- package/dist/database/puri.types.d.ts +5 -2
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +1 -1
- package/dist/storage/buffered-file.d.ts +3 -3
- package/dist/storage/buffered-file.d.ts.map +1 -1
- package/dist/storage/buffered-file.js +2 -2
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/storage-manager.d.ts +3 -4
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +2 -2
- package/dist/storage/types.d.ts +3 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/uploaded-file.d.ts +3 -3
- package/dist/storage/uploaded-file.d.ts.map +1 -1
- package/dist/storage/uploaded-file.js +1 -1
- package/package.json +1 -1
- package/src/api/__tests__/sonamu.storage.test.ts +145 -0
- package/src/api/decorators.ts +2 -3
- package/src/api/sonamu.ts +6 -6
- package/src/auth/__tests__/plugin-schema-mapping.test.ts +49 -0
- package/src/auth/plugins/entity-definitions/two-factor.ts +8 -0
- package/src/auth/plugins/wrappers/two-factor.ts +2 -0
- package/src/database/__tests__/puri-hydration.test.ts +226 -0
- package/src/database/base-model.ts +7 -3
- package/src/database/puri.ts +204 -15
- package/src/database/puri.types.test-d.ts +29 -0
- package/src/database/puri.types.ts +10 -2
- package/src/storage/__tests__/storage-manager.test.ts +64 -0
- package/src/storage/buffered-file.ts +3 -3
- package/src/storage/index.ts +1 -1
- package/src/storage/storage-manager.ts +4 -5
- package/src/storage/storage.test-d.ts +47 -0
- package/src/storage/types.ts +3 -2
- package/src/storage/uploaded-file.ts +4 -4
|
@@ -64,11 +64,14 @@ export type LeftJoinMarkerFor<TTables, Path extends string> = IsNullableColumn<T
|
|
|
64
64
|
type IsNullableJoinedTable<TTables, TableKey> = TableKey extends keyof TTables ? TTables[TableKey] extends LeftJoinedMarker ? true : false : false;
|
|
65
65
|
type JoinPath<Prefix extends string, Key extends string> = Prefix extends "" ? Key : `${Prefix}__${Key}`;
|
|
66
66
|
export type ParseSelectObject<TTables extends object, TSelect extends SelectObject<TTables>> = ParseSelectObjectWithPath<TTables, TSelect, "">;
|
|
67
|
+
type IsNullableSelectGroup<TTables, TSelect, Path extends string> = IsNullableJoinedTable<TTables, Path> extends true ? true : TSelect extends {
|
|
68
|
+
id: `${infer Alias}.${string}`;
|
|
69
|
+
} ? IsNullableJoinedTable<TTables, Alias> : false;
|
|
67
70
|
type ParseSelectObjectWithPath<TTables extends object, TSelect extends SelectObject<TTables>, Prefix extends string> = Expand<{
|
|
68
|
-
[K in keyof TSelect]: TSelect[K] extends SqlExpression<SqlExpressionType, boolean> ? ParseSqlExpression<TSelect[K]> : IsNestedObject<TSelect[K]> extends true ? TSelect[K] extends NestedSelectObject<TTables> ?
|
|
71
|
+
[K in keyof TSelect]: TSelect[K] extends SqlExpression<SqlExpressionType, boolean> ? ParseSqlExpression<TSelect[K]> : IsNestedObject<TSelect[K]> extends true ? TSelect[K] extends NestedSelectObject<TTables> ? IsNullableSelectGroup<TTables, TSelect[K], JoinPath<Prefix, K & string>> extends true ? Expand<ParseSelectObjectInner<TTables, TSelect[K], JoinPath<Prefix, K & string>>> | null : Expand<ParseSelectObjectInner<TTables, TSelect[K], JoinPath<Prefix, K & string>>> : never : ExtractColumnType<TTables, TSelect[K] & string>;
|
|
69
72
|
}>;
|
|
70
73
|
type ParseSelectObjectInner<TTables extends object, TSelect extends SelectObject<TTables>, Prefix extends string> = Expand<{
|
|
71
|
-
[K in keyof TSelect]: TSelect[K] extends SqlExpression<SqlExpressionType, boolean> ? ParseSqlExpression<TSelect[K]> : IsNestedObject<TSelect[K]> extends true ? TSelect[K] extends NestedSelectObject<TTables> ?
|
|
74
|
+
[K in keyof TSelect]: TSelect[K] extends SqlExpression<SqlExpressionType, boolean> ? ParseSqlExpression<TSelect[K]> : IsNestedObject<TSelect[K]> extends true ? TSelect[K] extends NestedSelectObject<TTables> ? IsNullableSelectGroup<TTables, TSelect[K], JoinPath<Prefix, K & string>> extends true ? Expand<ParseSelectObjectInner<TTables, TSelect[K], JoinPath<Prefix, K & string>>> | null : Expand<ParseSelectObjectInner<TTables, TSelect[K], JoinPath<Prefix, K & string>>> : never : ExtractColumnTypeRaw<TTables, TSelect[K] & string>;
|
|
72
75
|
}>;
|
|
73
76
|
export type ExtractColumnType<TTables extends object, Path extends string> = Path extends `${infer TAlias}.${infer TColumn}` ? TAlias extends keyof TTables ? TColumn extends keyof TTables[TAlias] ? TTables[TAlias] extends LeftJoinedMarker ? TTables[TAlias][TColumn] | null : TTables[TAlias][TColumn] : never : never : IsSingleKey<TTables> extends true ? Path extends keyof TTables[keyof TTables] ? TTables[keyof TTables][Path] : never : never;
|
|
74
77
|
type ExtractColumnTypeRaw<TTables extends object, Path extends string> = Path extends `${infer TAlias}.${infer TColumn}` ? TAlias extends keyof TTables ? TColumn extends keyof TTables[TAlias] ? TTables[TAlias][TColumn] : never : never : IsSingleKey<TTables> extends true ? Path extends keyof TTables[keyof TTables] ? TTables[keyof TTables][Path] : never : never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,4 +11,4 @@ var init_puri_types = __esmMin((() => {
|
|
|
11
11
|
init_puri_types();
|
|
12
12
|
export { FUZZY_OPERATORS, init_puri_types };
|
|
13
13
|
|
|
14
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyaS50eXBlcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvcHVyaS50eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBveGxpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovIC8vIFB1cmkudHlwZXMudHPripQg64uk7JaR7ZWcIO2DgOyeheydhCDsgqzsmqntlZjqs6Ag7J6I7Iq164uI64ukLlxuXG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgdHlwZSBRdWVyeVJlc3VsdCB9IGZyb20gXCJwZ1wiO1xuXG5pbXBvcnQgeyB0eXBlIERhdGFiYXNlRm9yZWlnbktleXMsIHR5cGUgRGF0YWJhc2VTY2hlbWFFeHRlbmQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgUHVyaSB9IGZyb20gXCIuL3B1cmlcIjtcbmltcG9ydCB7IHR5cGUgUHVyaVN1YnNldEZuIH0gZnJvbSBcIi4vcHVyaS1zdWJzZXQudHlwZXNcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIOuCtOu2gCDtg4DsnoUg7YKkICjrqZTtg4DrjbDsnbTthLApXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxudHlwZSBGdWxsdGV4dEtleSA9IFwiX19mdWxsdGV4dF9fXCI7XG50eXBlIFZpcnR1YWxLZXkgPSBcIl9fdmlydHVhbF9fXCI7XG50eXBlIExlZnRKb2luZWRLZXkgPSBcIl9fbGVmdEpvaW5lZF9fXCI7XG50eXBlIEhhc0RlZmF1bHQgPSBcIl9faGFzRGVmYXVsdF9fXCI7XG50eXBlIEdlbmVyYXRlZEtleSA9IFwiX19nZW5lcmF0ZWRfX1wiO1xudHlwZSBWZWN0b3JLZXkgPSBcIl9fdmVjdG9yX19cIjtcbnR5cGUgSnNvbktleSA9IFwiX19qc29uX19cIjtcbnR5cGUgVmlydHVhbFF1ZXJ5S2V5ID0gXCJfX3ZpcnR1YWxfcXVlcnlfX1wiO1xudHlwZSBTcWxFeHByZXNzaW9uVHlwZSA9IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcImRhdGVcIiB8IFwic3RyaW5nW11cIiB8IFwidHN2ZWN0b3JcIjtcblxudHlwZSBJbnRlcm5hbFR5cGVLZXlzID1cbiAgfCBGdWxsdGV4dEtleVxuICB8IFZpcnR1YWxLZXlcbiAgfCBMZWZ0Sm9pbmVkS2V5XG4gIHwgSGFzRGVmYXVsdFxuICB8IEdlbmVyYXRlZEtleVxuICB8IFZlY3RvcktleVxuICB8IEpzb25LZXlcbiAgfCBWaXJ0dWFsUXVlcnlLZXk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyDtg4DsnoUg7Jyg7Yu466as7YuwXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBfX3ZlY3Rvcl9fIOuplO2DgOuNsOydtO2EsOyXkOyEnCDrsqHthLAg7Lus65+8IOy2lOy2nFxudHlwZSBWZWN0b3JDb2x1bW5LZXlzPFQ+ID0gVCBleHRlbmRzIHsgW0sgaW4gVmVjdG9yS2V5XTogcmVhZG9ubHkgKGluZmVyIFYpW10gfVxuICA/IFYgJiBzdHJpbmdcbiAgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgVmVjdG9yQ29sdW1uczxUVGFibGVzIGV4dGVuZHMgb2JqZWN0PiA9XG4gIHwge1xuICAgICAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogYCR7VEFsaWFzICYgc3RyaW5nfS4ke1ZlY3RvckNvbHVtbktleXM8VFRhYmxlc1tUQWxpYXNdPn1gO1xuICAgIH1ba2V5b2YgVFRhYmxlc11cbiAgfCAoSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlID8gVmVjdG9yQ29sdW1uS2V5czxUVGFibGVzW2tleW9mIFRUYWJsZXNdPiA6IG5ldmVyKTtcblxuLy8gX19qc29uX18g66mU7YOA642w7J207YSw7JeQ7IScIEpTT04g7Lus65+8IOy2lOy2nFxudHlwZSBKc29uQ29sdW1uS2V5czxUPiA9IFQgZXh0ZW5kcyB7IFtLIGluIEpzb25LZXldOiByZWFkb25seSAoaW5mZXIgSilbXSB9ID8gSiAmIHN0cmluZyA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBKc29uQ29sdW1uczxUVGFibGVzIGV4dGVuZHMgb2JqZWN0PiA9XG4gIHwge1xuICAgICAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogYCR7VEFsaWFzICYgc3RyaW5nfS4ke0pzb25Db2x1bW5LZXlzPFRUYWJsZXNbVEFsaWFzXT59YDtcbiAgICB9W2tleW9mIFRUYWJsZXNdXG4gIHwgKElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZSA/IEpzb25Db2x1bW5LZXlzPFRUYWJsZXNba2V5b2YgVFRhYmxlc10+IDogbmV2ZXIpO1xuXG50eXBlIEpzb25TdXBlcnNldE5lc3RlZFZhbHVlPFQ+ID0gVCBleHRlbmRzIHJlYWRvbmx5IChpbmZlciBFbGVtZW50KVtdXG4gID8gSnNvblN1cGVyc2V0TmVzdGVkVmFsdWU8RWxlbWVudD5bXVxuICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgICA/IHsgW0sgaW4ga2V5b2YgVF0/OiBKc29uU3VwZXJzZXROZXN0ZWRWYWx1ZTxUW0tdPiB9XG4gICAgOiBUO1xuXG5leHBvcnQgdHlwZSBKc29uU3VwZXJzZXRWYWx1ZTxUPiA9IEpzb25TdXBlcnNldE5lc3RlZFZhbHVlPE5vbk51bGxhYmxlPFQ+PjtcblxuLy8g7YWM7J2067iU66qFIO2DgOyehVxuZXhwb3J0IHR5cGUgVGFibGVOYW1lPFRTY2hlbWE+ID0ga2V5b2YgVFNjaGVtYSAmIHN0cmluZztcblxuLy8g7YWM7J2067iU7J2YIGlkKFBLKSDtg4DsnoXsnYQg7LaU7LacXG5leHBvcnQgdHlwZSBJZFR5cGU8VFNjaGVtYSwgVFRhYmxlIGV4dGVuZHMga2V5b2YgVFNjaGVtYT4gPSBUU2NoZW1hW1RUYWJsZV0gZXh0ZW5kcyB7IGlkOiBpbmZlciBJIH1cbiAgPyBJXG4gIDogbnVtYmVyO1xuXG4vLyB2aXJ0dWFsIOy7rOufvCDtg4DsnoUg7LaU7LacXG50eXBlIFZpcnR1YWxLZXlzPFQ+ID0gVCBleHRlbmRzIHsgW0sgaW4gVmlydHVhbEtleV06IHJlYWRvbmx5IChpbmZlciBWKVtdIH0gPyBWICYgc3RyaW5nIDogbmV2ZXI7XG5cbi8vIHZpcnR1YWwg7Lus65+8IOygnOqxsFxudHlwZSBTdHJpcFZpcnR1YWw8VD4gPSBPbWl0PFQsIFZpcnR1YWxLZXlzPFQ+PjtcblxuLy8gTEVGVCBKT0lOIOuniOy7pCAtIG51bGxhYmxlIEZL66GcIOyhsOyduOuQnCDthYzsnbTruJRcbi8vIOydtCDrp4jsu6TripQgbnVsbGFibGUgRksgKyBsZWZ0Sm9pbiDsobDtlansl5DshJzrp4wg67aZ7Iq164uI64ukLlxuLy8gam9pbiArIEZLIG51bGxhYmxlIC0+IOyViCDrtpnsnYxcbi8vIGpvaW4gKyBGSyBub24tbnVsbGFibGUgLT4g7JWIIOu2meydjFxuLy8gbGVmdEpvaW4gKyBGSyBub24tbnVsbGFibGUgLT4g7JWIIOu2meydjFxuLy8gbGVmdEpvaW4gKyBGSyBudWxsYWJsZSAtPiDrtpnsnYwhXG5leHBvcnQgdHlwZSBMZWZ0Sm9pbmVkTWFya2VyID0geyBbSyBpbiBMZWZ0Sm9pbmVkS2V5XTogdHJ1ZSB9O1xuXG4vLyDrqZTtg4DrjbDsnbTthLAg7ZWE65OcIOygnOyZuO2VnCDsi6TsoJwg7JeU7Yuw7YuwIOy7rOufvFxuZXhwb3J0IHR5cGUgQ29sdW1uS2V5czxUPiA9IEV4Y2x1ZGU8a2V5b2YgU3RyaXBWaXJ0dWFsPFQ+LCBJbnRlcm5hbFR5cGVLZXlzPiAmIHN0cmluZztcblxuLy8gdmlydHVhbCDsu6zrn7wg7KCc6rGwIO2bhCBfX2Z1bGx0ZXh0X18g7Jyg7KeAXG5leHBvcnQgdHlwZSBQdXJpVGFibGU8VD4gPSBPbWl0PFN0cmlwVmlydHVhbDxUPiwgVmlydHVhbEtleT47XG5cbi8vIOuCtOu2gCDtg4DsnoUg7YKkIOygnOyZuCAo7Iuk7KCcIOy7rOufvOunjCDrgqjquYApXG5leHBvcnQgdHlwZSBPbWl0SW50ZXJuYWxUeXBlS2V5czxUPiA9IE9taXQ8VCwgSW50ZXJuYWxUeXBlS2V5cz47XG5cbi8vIFRUYWJsZXPsnZgg66qo65OgIO2FjOydtOu4lOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIOy7rOufvCDqsr3roZxcbmV4cG9ydCB0eXBlIEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcyBleHRlbmRzIG9iamVjdD4gPSAoXG4gIHwge1xuICAgICAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogYCR7VEFsaWFzICYgc3RyaW5nfS4ke0NvbHVtbktleXM8VFRhYmxlc1tUQWxpYXNdPn1gO1xuICAgIH1ba2V5b2YgVFRhYmxlc11cbiAgfCAoSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IENvbHVtbktleXM8VFRhYmxlc1trZXlvZiBUVGFibGVzXT4gLy8g64uo7J28IO2FjOydtOu4lOydtOuptCDsu6zrn7zrqoXrp4zrj4Qg7ZeI7JqpXG4gICAgICA6IG5ldmVyKVxuKSAmXG4gIHN0cmluZztcblxuLy8g7Iir7J6QIO2DgOyehSDsu6zrn7zrp4wg7LaU7Lac7ZWY64qUIOycoO2LuOumrO2LsCDtg4DsnoVcbnR5cGUgTnVtZXJpY0NvbHVtbktleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50IHwgbnVsbCB8IHVuZGVmaW5lZCA/IEsgOiBuZXZlcjtcbn1ba2V5b2YgVF0gJlxuICBzdHJpbmc7XG5cbi8vIFRUYWJsZXPsnZgg66qo65OgIO2FjOydtOu4lOyXkOyEnCDsiKvsnpAg7YOA7J6FIOy7rOufvOunjCDstpTstpxcbmV4cG9ydCB0eXBlIE51bWVyaWNDb2x1bW5zPFRUYWJsZXMgZXh0ZW5kcyBvYmplY3Q+ID1cbiAgfCB7XG4gICAgICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7TnVtZXJpY0NvbHVtbktleXM8VFRhYmxlc1tUQWxpYXNdPn1gO1xuICAgIH1ba2V5b2YgVFRhYmxlc11cbiAgfCAoSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IE51bWVyaWNDb2x1bW5LZXlzPFRUYWJsZXNba2V5b2YgVFRhYmxlc10+IC8vIOuLqOydvCDthYzsnbTruJTsnbTrqbQg7Lus65+866qF66eM64+EIO2XiOyaqVxuICAgICAgOiBuZXZlcik7XG5cbi8vIEdyb3VwIEJ5LCBPcmRlciBCeSwgSGF2aW5nIOuTseyXkOyEnCDshKDtg50g6rCA64ql7ZWcIOy7rOufvFxuZXhwb3J0IHR5cGUgUmVzdWx0QXZhaWxhYmxlQ29sdW1uczxUVGFibGVzIGV4dGVuZHMgb2JqZWN0LCBUUmVzdWx0ID0gYW55PiA9XG4gIHwgQXZhaWxhYmxlQ29sdW1uczxUVGFibGVzPlxuICB8IGAke2tleW9mIFRSZXN1bHQgJiBzdHJpbmd9YDtcblxuLy8gU2VsZWN0IOqwkiDtg4DsnoUg7ZmV7J6lICjri6jsnbwg7Lus65+8IOuYkOuKlCBTUUwg7ZGc7ZiE7IudKVxuZXhwb3J0IHR5cGUgU2VsZWN0VmFsdWU8VFRhYmxlcyBleHRlbmRzIG9iamVjdD4gPVxuICB8IEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5cbiAgfCBTcWxFeHByZXNzaW9uPFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcImRhdGVcIiB8IFwic3RyaW5nW11cIiwgYm9vbGVhbj47XG5cbi8vIOykkeyyqSBTZWxlY3Qg6rCd7LK0IO2DgOyehSAo7J6s6reA7KCBKVxuLy8g7JiIOiB7IHBhcmVudDogeyBpZDogXCJwYXJlbnQuaWRcIiwgbmFtZTogXCJwYXJlbnQubmFtZVwiIH0gfVxuZXhwb3J0IHR5cGUgTmVzdGVkU2VsZWN0T2JqZWN0PFRUYWJsZXMgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBba2V5OiBzdHJpbmddOiBTZWxlY3RWYWx1ZTxUVGFibGVzPiB8IE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPjtcbn07XG5cbi8vIFNlbGVjdCDqsJ3ssrQg7YOA7J6FIChmbGF0IOuYkOuKlCDspJHssqkg7ZeI7JqpKVxuZXhwb3J0IHR5cGUgU2VsZWN0T2JqZWN0PFRUYWJsZXMgZXh0ZW5kcyBvYmplY3Q+ID0gTmVzdGVkU2VsZWN0T2JqZWN0PFRUYWJsZXM+O1xuXG4vLyDqsJLsnbQg7KSR7LKpIOqwneyytOyduOyngCDtjJDrs4TtlZjripQg7Zes7Y28IO2DgOyehVxudHlwZSBJc05lc3RlZE9iamVjdDxUPiA9IFQgZXh0ZW5kcyBzdHJpbmdcbiAgPyBmYWxzZVxuICA6IFQgZXh0ZW5kcyBTcWxFeHByZXNzaW9uPFNxbEV4cHJlc3Npb25UeXBlLCBib29sZWFuPlxuICAgID8gZmFsc2VcbiAgICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZTtcblxuLy8g7Lus65+87J20IG51bGxhYmxl7J247KeAIO2ZleyduCAo7Iqk7YKk66eI7JeQ7IScIOyngeygkSDstpTstpwpXG4vLyDsmIg6IElzTnVsbGFibGVDb2x1bW48VFRhYmxlcywgXCJlbXBsb3llZXMuZGVwYXJ0bWVudF9pZFwiPiDihpIgZGVwYXJ0bWVudF9pZOqwgCBudW1iZXIgfCBudWxs7J2066m0IHRydWVcbmV4cG9ydCB0eXBlIElzTnVsbGFibGVDb2x1bW48XG4gIFRUYWJsZXMsXG4gIFBhdGggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gUGF0aCBleHRlbmRzIGAke2luZmVyIFRBbGlhc30uJHtpbmZlciBUQ29sdW1ufWBcbiAgPyBUQWxpYXMgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBUQ29sdW1uIGV4dGVuZHMga2V5b2YgVFRhYmxlc1tUQWxpYXNdXG4gICAgICA/IG51bGwgZXh0ZW5kcyBUVGFibGVzW1RBbGlhc11bVENvbHVtbl1cbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2VcbiAgICAgIDogZmFsc2VcbiAgICA6IGZhbHNlXG4gIDogZmFsc2U7XG5cbi8vIEZLIG51bGxhYmxlIOyXrOu2gOyXkCDrlLDrpbgg66eI7LukIO2DgOyehSDqsrDsoJVcbi8vIG51bGxhYmxlIEZL66GcIGxlZnRKb2luIOKGkiBMZWZ0Sm9pbmVkTWFya2VyICjqsJ3ssrQg7J6Q7LK06rCAIG51bGzsnbwg7IiYIOyeiOydjClcbi8vIG5vbi1udWxsIEZL66GcIGxlZnRKb2luIOKGkiDrp4jsu6Qg7JeG7J2MICjrtoDrqqjqsIAg7J6I7Jy866m0IOyekOyLneuPhCDrsJjrk5zsi5wg7J6I7J2MKVxuZXhwb3J0IHR5cGUgTGVmdEpvaW5NYXJrZXJGb3I8VFRhYmxlcywgUGF0aCBleHRlbmRzIHN0cmluZz4gPVxuICBJc051bGxhYmxlQ29sdW1uPFRUYWJsZXMsIFBhdGg+IGV4dGVuZHMgdHJ1ZSA/IExlZnRKb2luZWRNYXJrZXIgOiB7fTtcblxuLy8g7KO87Ja07KeEIO2FjOydtOu4lOydtCBGSyBudWxsYWJsZeuhnCBsZWZ0Sm9pbiDrkJwg7YWM7J2067iU7J247KeAIO2ZleyduO2VqeuLiOuLpC5cbi8vIOyCrOyLpCBMZWZ0Sm9pbk1hcmtlcuqwgCDrtpnsl4jripTsp4Ag7ZmV7J247ZWY64qU6rKMIOuLpOyeheuLiOuLpC5cbi8vIOydtCDrp4jsu6TripQgRksgbnVsbGFibGUgKyBsZWZ0Sm9pbiDsobDtlansl5DshJzrp4wg67aZ7Iq164uI64ukLlxudHlwZSBJc051bGxhYmxlSm9pbmVkVGFibGU8VFRhYmxlcywgVGFibGVLZXk+ID0gVGFibGVLZXkgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gID8gVFRhYmxlc1tUYWJsZUtleV0gZXh0ZW5kcyBMZWZ0Sm9pbmVkTWFya2VyXG4gICAgPyB0cnVlIC8vIExlZnRKb2luZWRNYXJrZXLqsIAg7J6I7Jy866m0IG51bGxhYmxlXG4gICAgOiBmYWxzZVxuICA6IGZhbHNlO1xuXG4vLyDqsr3roZwg7KGw7ZWpIO2XrO2NvCAocHJlZml46rCAIOyXhuycvOuptCBrZXnrp4wsIOyeiOycvOuptCBwcmVmaXhfX2tleSlcbnR5cGUgSm9pblBhdGg8UHJlZml4IGV4dGVuZHMgc3RyaW5nLCBLZXkgZXh0ZW5kcyBzdHJpbmc+ID0gUHJlZml4IGV4dGVuZHMgXCJcIlxuICA/IEtleVxuICA6IGAke1ByZWZpeH1fXyR7S2V5fWA7XG5cbi8vIFNlbGVjdCDqsrDqs7wg7YOA7J6F7J2EIOy2lOuhoO2VtOyjvOuKlCDsuZzqtazsnoXri4jri6QuXG4vLyDsnbQg7YOA7J6F7J2AIFB1cmnsnZggc2VsZWN0LCBhcHBlbmRTZWxlY3Tsl5DshJwgVFJlc3VsdOuhnCDsgqzsmqnrkKnri4jri6QuXG4vL1xuLy8gU2NoZW1h66W8IOydveyWtOyEnCBGS+ydmCBudWxsYWJpbGl0eeyXkCDrlLDrnbwgam9pbuuQnCDqsJ3ssrTsnZgg7YOA7J6F7J2EIOy2lOuhoO2VtOyjvOuKlCDquLDriqXsnbQg7J6I7Iq164uI64ukLlxuLy8g7J206rKMIOustOyKqCDshozrpqzrg5A/IEZL6rCAIG51bGxhYmxl7J24642wIGxlZnRKb2lu65CY7JeI64uk66m0LCDtlbTri7kg6rCd7LK064qUIG51bGxhYmxlIO2VtOyVvCDtlajsnYQg7YOA7J6FIOy2lOuhoOycvOuhnCDrsJjsmIHtlbTspIDri6TripQg6rKD7J6F64uI64ukLlxuLy8g67CY66m0IEZL6rCAIG5vbi1udWxsYWJsZeydtOqxsOuCmCDqt7jrg6Ugam9pbuycvOuhnCDsnbTslrTsoYzri6TrqbQg7ZW064u5IOqwneyytOuKlCBub24tbnVsbGFibGXtlaAg6rKB64uI64ukLlxuLy8g66y866GgIOqwneyytCDrgrTrtoDsnZggbnVsbGFiaWxpdHnripQg65iQIOuzhOqwnOuhnCDstpTroaDrkKnri4jri6QuXG4vL1xuLy8g7JWE656Y7JeQ64+EIFBhcnNlU2VsZWN0T2JqZWN0V2l0aFBhdGjrpbwg67mE66Gv7ZW0IEV4dHJhY3RDb2x1bW5UeXBlLCBFeHRyYWN0Q29sdW1uVHlwZVJhdyDrk7HsnZgg7YOA7J6F7J20IOyeiOyKteuLiOuLpC5cbi8vIOydtOuTpOydmCDsl63tlaDsnYAg64uk7J2M6rO8IOqwmeyKteuLiOuLpDpcbi8vIC0gUGFyc2UqOiDqsJ3ssrQg66CI67Ko7JeQ7IScIOykkeyyqSDqtazsobDrpbwg7Iic7ZqM7ZWY66mwIOqwneyytOyXkCB8IG51bGzsnYQg67aZ7J287KeAIOqysOygle2VqeuLiOuLpC5cbi8vIC0gRXh0cmFjdCo6IO2VhOuTnCDroIjrsqjsl5DshJwgXCJ0YWJsZS5jb2x1bW5cIiDqsr3roZzroZzrtoDthLAg7Iuk7KCcIO2DgOyeheydhCDstpTstpztlanri4jri6QuXG4vL1xuLy8g7JiI7IucOlxuLy8gLnNlbGVjdCh7XG4vLyAgIGlkOiBcInVzZXJzLmlkXCIsICAgICAgICAgICAvLyDihpAgRXh0cmFjdENvbHVtblR5cGXsnZgg6rKw6rO864qUIG51bWJlcuyeheuLiOuLpC5cbi8vICAgZGVwYXJ0bWVudDogeyAgICAgICAgICAgICAvLyDihpAgUGFyc2VTZWxlY3RPYmplY3RJbm5lcuyXkCDsnZjtlbQgbnVsbGFibGUg6rCd7LK066GcIOy2lOuhoOuQqeuLiOuLpC5cbi8vICAgICBpZDogXCJkZXBhcnRtZW50LmlkXCIsICAgIC8vIOKGkCBFeHRyYWN0Q29sdW1uVHlwZVJhd+ydmCDqsrDqs7zripQgbnVtYmVy7J6F64uI64ukLlxuLy8gICAgIG5hbWU6IFwiZGVwYXJ0bWVudC5uYW1lXCIgLy8g4oaQIEV4dHJhY3RDb2x1bW5UeXBlUmF37J2YIOqysOqzvOuKlCBzdHJpbmfsnoXri4jri6QuXG4vLyAgIH1cbi8vIH0pXG5leHBvcnQgdHlwZSBQYXJzZVNlbGVjdE9iamVjdDxcbiAgVFRhYmxlcyBleHRlbmRzIG9iamVjdCxcbiAgVFNlbGVjdCBleHRlbmRzIFNlbGVjdE9iamVjdDxUVGFibGVzPixcbj4gPSBQYXJzZVNlbGVjdE9iamVjdFdpdGhQYXRoPFRUYWJsZXMsIFRTZWxlY3QsIFwiXCI+O1xuXG4vLyDqsr3roZzrpbwg7LaU7KCB7ZWY66m07IScIFNlbGVjdCDqsrDqs7wg7YOA7J6F7J2EIOy2lOuhoO2VqeuLiOuLpC5cbnR5cGUgUGFyc2VTZWxlY3RPYmplY3RXaXRoUGF0aDxcbiAgVFRhYmxlcyBleHRlbmRzIG9iamVjdCxcbiAgVFNlbGVjdCBleHRlbmRzIFNlbGVjdE9iamVjdDxUVGFibGVzPixcbiAgUHJlZml4IGV4dGVuZHMgc3RyaW5nLFxuPiA9IEV4cGFuZDx7XG4gIFtLIGluIGtleW9mIFRTZWxlY3RdOiBUU2VsZWN0W0tdIGV4dGVuZHMgU3FsRXhwcmVzc2lvbjxTcWxFeHByZXNzaW9uVHlwZSwgYm9vbGVhbj5cbiAgICA/IFBhcnNlU3FsRXhwcmVzc2lvbjxUU2VsZWN0W0tdPlxuICAgIDogSXNOZXN0ZWRPYmplY3Q8VFNlbGVjdFtLXT4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IFRTZWxlY3RbS10gZXh0ZW5kcyBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcz5cbiAgICAgICAgPyBJc051bGxhYmxlSm9pbmVkVGFibGU8VFRhYmxlcywgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4gZXh0ZW5kcyB0cnVlIC8vIOyjvOyWtOynhCDthYzsnbTruJTsnbQgRksgbnVsbGFibGXsl5AgbGVmdEpvaW7rkJjsl4jripTsp4Ag7Jes67aA7JeQIOuUsOudvCBzZWxlY3Qg6rKw6rO8IOqwneyytOydmCDtg4DsnoXsnbQg64us65287KeR64uI64ukLlxuICAgICAgICAgID8gRXhwYW5kPFBhcnNlU2VsZWN0T2JqZWN0SW5uZXI8VFRhYmxlcywgVFNlbGVjdFtLXSwgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4+IHwgbnVsbCAvLyDrp4zslb0g7ZW064u57ZWc64uk66m0IO2VtOuLuSDqsJ3ssrQg7J6Q7LK064qUIG51bGxhYmxlIO2VmOupsCxcbiAgICAgICAgICA6IEV4cGFuZDxQYXJzZVNlbGVjdE9iamVjdElubmVyPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+PiAvLyDqt7jroIfsp4Ag7JWK64uk66m0IG5vbi1udWxsYWJsZSDtlanri4jri6QuXG4gICAgICAgIDogbmV2ZXJcbiAgICAgIDogRXh0cmFjdENvbHVtblR5cGU8VFRhYmxlcywgVFNlbGVjdFtLXSAmIHN0cmluZz47XG59PjtcblxuLy8g7KSR7LKpIOqwneyytCDrgrTrtoDsmqkgLSBsZWZ0Sm9pbiBudWxsYWJsZeydhCDqsJ3ssrQg66CI67Ko7JeQ7IScIOydtOuvuCDsspjrpqztlojsnLzrr4DroZwg7ZWE65Oc64qUIOybkOuzuCDtg4DsnoXsnYQg7IKs7Jqp7ZWp64uI64ukLlxuLy8gUGFyc2VTZWxlY3RPYmplY3RXaXRoUGF0aOyZgCDqsbDsnZgg64+Z7J287ZWY64KYLCDrp4jsp4Drp4nsl5AgRXh0cmFjdENvbHVtblR5cGUg64yA7IugIEV4dHJhY3RDb2x1bW5UeXBlUmF366W8IOyCrOyaqe2VmOyXrFxuLy8g7ZWE65OcIOugiOuyqOyXkOyEnCDspJHrs7XsnLzroZwgfCBudWxs7J20IOy2lOqwgOuQmOuKlCDqsoPsnYQg67Cp7KeA7ZWp64uI64ukLlxudHlwZSBQYXJzZVNlbGVjdE9iamVjdElubmVyPFxuICBUVGFibGVzIGV4dGVuZHMgb2JqZWN0LFxuICBUU2VsZWN0IGV4dGVuZHMgU2VsZWN0T2JqZWN0PFRUYWJsZXM+LFxuICBQcmVmaXggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gRXhwYW5kPHtcbiAgW0sgaW4ga2V5b2YgVFNlbGVjdF06IFRTZWxlY3RbS10gZXh0ZW5kcyBTcWxFeHByZXNzaW9uPFNxbEV4cHJlc3Npb25UeXBlLCBib29sZWFuPlxuICAgID8gUGFyc2VTcWxFeHByZXNzaW9uPFRTZWxlY3RbS10+XG4gICAgOiBJc05lc3RlZE9iamVjdDxUU2VsZWN0W0tdPiBleHRlbmRzIHRydWVcbiAgICAgID8gVFNlbGVjdFtLXSBleHRlbmRzIE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPlxuICAgICAgICA/IElzTnVsbGFibGVKb2luZWRUYWJsZTxUVGFibGVzLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+PiBleHRlbmRzIHRydWVcbiAgICAgICAgICA/IEV4cGFuZDxQYXJzZVNlbGVjdE9iamVjdElubmVyPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+PiB8IG51bGxcbiAgICAgICAgICA6IEV4cGFuZDxQYXJzZVNlbGVjdE9iamVjdElubmVyPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+PlxuICAgICAgICA6IG5ldmVyXG4gICAgICA6IEV4dHJhY3RDb2x1bW5UeXBlUmF3PFRUYWJsZXMsIFRTZWxlY3RbS10gJiBzdHJpbmc+OyAvLyBsZWZ0Sm9pbiBudWxsYWJsZSDrrLTsi5xcbn0+O1xuXG4vLyDsu6zrn7wg6rK966Gc7JeQ7IScIO2DgOyeheydhCDstpTstpztlanri4jri6QuIExlZnRKb2luZWRNYXJrZXLqsIAg7J6I7Jy866m0IHwgbnVsbOydhCDstpTqsIDtlanri4jri6QuXG4vLyDstZzsg4HsnIQgc2VsZWN0IO2VhOuTnOyXkOyEnCDsgqzsmqnrkKnri4jri6QuXG5leHBvcnQgdHlwZSBFeHRyYWN0Q29sdW1uVHlwZTxcbiAgVFRhYmxlcyBleHRlbmRzIG9iamVjdCxcbiAgUGF0aCBleHRlbmRzIHN0cmluZyxcbj4gPSBQYXRoIGV4dGVuZHMgYCR7aW5mZXIgVEFsaWFzfS4ke2luZmVyIFRDb2x1bW59YFxuICA/IFRBbGlhcyBleHRlbmRzIGtleW9mIFRUYWJsZXNcbiAgICA/IFRDb2x1bW4gZXh0ZW5kcyBrZXlvZiBUVGFibGVzW1RBbGlhc11cbiAgICAgID8gVFRhYmxlc1tUQWxpYXNdIGV4dGVuZHMgTGVmdEpvaW5lZE1hcmtlclxuICAgICAgICA/IFRUYWJsZXNbVEFsaWFzXVtUQ29sdW1uXSB8IG51bGwgLy8gTEVGVCBKT0lOIChudWxsYWJsZSBGSykg4oaSIG51bGxhYmxlXG4gICAgICAgIDogVFRhYmxlc1tUQWxpYXNdW1RDb2x1bW5dIC8vIElOTkVSIEpPSU4g65iQ64qUIG5vbi1udWxsIEZLIGxlZnRKb2luIOKGkiBub24tbnVsbGFibGVcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyXG4gIDogSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlXG4gICAgPyBQYXRoIGV4dGVuZHMga2V5b2YgVFRhYmxlc1trZXlvZiBUVGFibGVzXVxuICAgICAgPyBUVGFibGVzW2tleW9mIFRUYWJsZXNdW1BhdGhdXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlcjtcblxuLy8g7Lus65+8IOqyveuhnOyXkOyEnCDtg4DsnoXsnYQg7LaU7Lac7ZWp64uI64ukLiBsZWZ0Sm9pbiDsl6zrtoDsmYAg6rSA6rOE7JeG7J20IOybkOuzuCDtg4DsnoXsnYQg67CY7ZmY7ZWp64uI64ukLlxuLy8g7KSR7LKpIOqwneyytCDrgrTrtoAg7ZWE65Oc7JeQ7IScIOyCrOyaqeuQqeuLiOuLpC4gKOqwneyytCDroIjrsqjsl5DshJwg7J2066+4IHwgbnVsbCDsspjrpqzqsIAg7JmE66OM65CY7JeI7Jy866+A66GcKVxudHlwZSBFeHRyYWN0Q29sdW1uVHlwZVJhdzxcbiAgVFRhYmxlcyBleHRlbmRzIG9iamVjdCxcbiAgUGF0aCBleHRlbmRzIHN0cmluZyxcbj4gPSBQYXRoIGV4dGVuZHMgYCR7aW5mZXIgVEFsaWFzfS4ke2luZmVyIFRDb2x1bW59YFxuICA/IFRBbGlhcyBleHRlbmRzIGtleW9mIFRUYWJsZXNcbiAgICA/IFRDb2x1bW4gZXh0ZW5kcyBrZXlvZiBUVGFibGVzW1RBbGlhc11cbiAgICAgID8gVFRhYmxlc1tUQWxpYXNdW1RDb2x1bW5dIC8vIGxlZnRKb2luIOyXrOu2gOyZgCDqtIDqs4Tsl4bsnbQg7JuQ67O4IO2DgOyehVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXJcbiAgOiBJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWVcbiAgICA/IFBhdGggZXh0ZW5kcyBrZXlvZiBUVGFibGVzW2tleW9mIFRUYWJsZXNdXG4gICAgICA/IFRUYWJsZXNba2V5b2YgVFRhYmxlc11bUGF0aF1cbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xuXG4vLyBXaGVyZSDsobDqsbQg6rCd7LK0IO2DgOyehVxuLy8g7JiIOiB7IFwidS5pZFwiOiAxLCBcInUuc3RhdHVzXCI6IFwiYWN0aXZlXCIgfVxuZXhwb3J0IHR5cGUgV2hlcmVDb25kaXRpb248VFRhYmxlcyBleHRlbmRzIG9iamVjdD4gPSB7XG4gIFtrZXkgaW4gQXZhaWxhYmxlQ29sdW1uczxUVGFibGVzPl0/OiBFeHRyYWN0Q29sdW1uVHlwZTxUVGFibGVzLCBrZXkgJiBzdHJpbmc+O1xufTtcblxuLy8gRnVsbHRleHQgaW5kZXgg7Lus65+8IOy2lOy2nCDtg4DsnoVcbmV4cG9ydCB0eXBlIEZ1bGx0ZXh0Q29sdW1uczxUVGFibGVzIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogVFRhYmxlc1tUQWxpYXNdIGV4dGVuZHMge1xuICAgIFtLIGluIEZ1bGx0ZXh0S2V5XTogcmVhZG9ubHkgKGluZmVyIENvbClbXTtcbiAgfVxuICAgID8gQ29sIGV4dGVuZHMgc3RyaW5nXG4gICAgICA/IGAke1RBbGlhcyAmIHN0cmluZ30uJHtDb2x9YFxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG59W2tleW9mIFRUYWJsZXNdO1xuXG4vLyDruYTqtZAg7Jew7IKw7J6QXG5leHBvcnQgdHlwZSBDb21wYXJpc29uT3BlcmF0b3IgPSBcIj1cIiB8IFwiPlwiIHwgXCI+PVwiIHwgXCI8XCIgfCBcIjw9XCIgfCBcIjw+XCIgfCBcIiE9XCI7XG4vLyDsobDqsbQg7Jew7IKw7J6QOiDruYTqtZAg7Jew7IKw7J6QICsg7Yyo7YS0IOunpOy5rSDsl7DsgrDsnpBcbmV4cG9ydCB0eXBlIFdoZXJlT3BlcmF0b3IgPSBDb21wYXJpc29uT3BlcmF0b3IgfCBcImxpa2VcIiB8IFwibm90IGxpa2VcIiB8IFwiaWxpa2VcIiB8IFwibm90IGlsaWtlXCI7XG5leHBvcnQgY29uc3QgRlVaWllfT1BFUkFUT1JTID0gW1wiPCVcIiwgXCIlXCIsIFwiPDwlXCJdIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRnV6enlPcGVyYXRvciA9ICh0eXBlb2YgRlVaWllfT1BFUkFUT1JTKVtudW1iZXJdO1xuXG4vLyBTUUwgRXhwcmVzc2lvbiDtg4DsnoUg7KCV7J2YXG5leHBvcnQgdHlwZSBTcWxFeHByZXNzaW9uPFQgZXh0ZW5kcyBTcWxFeHByZXNzaW9uVHlwZSwgVE51bGxhYmxlIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiA9IHtcbiAgX3R5cGU6IFwic3FsX2V4cHJlc3Npb25cIjsgLy8g65iQ64qUIFwiY29tcHV0ZWRfdmFsdWVcIlxuICBfcmV0dXJuOiBUO1xuICBfc3FsOiBzdHJpbmc7XG4gIF9wYXJhbXM6IEtuZXguUmF3QmluZGluZ1tdO1xuICByZWFkb25seSBfbnVsbGFibGU/OiBUTnVsbGFibGU7XG59O1xuXG50eXBlIFBhcnNlU3FsRXhwcmVzc2lvbjxURXhwcmVzc2lvbj4gPVxuICBURXhwcmVzc2lvbiBleHRlbmRzIFNxbEV4cHJlc3Npb248aW5mZXIgVFJldHVybiwgaW5mZXIgVE51bGxhYmxlPlxuICAgID9cbiAgICAgICAgfCAoVFJldHVybiBleHRlbmRzIFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gc3RyaW5nXG4gICAgICAgICAgICA6IFRSZXR1cm4gZXh0ZW5kcyBcIm51bWJlclwiXG4gICAgICAgICAgICAgID8gbnVtYmVyXG4gICAgICAgICAgICAgIDogVFJldHVybiBleHRlbmRzIFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgICAgPyBib29sZWFuXG4gICAgICAgICAgICAgICAgOiBUUmV0dXJuIGV4dGVuZHMgXCJkYXRlXCJcbiAgICAgICAgICAgICAgICAgID8gRGF0ZVxuICAgICAgICAgICAgICAgICAgOiBUUmV0dXJuIGV4dGVuZHMgXCJzdHJpbmdbXVwiXG4gICAgICAgICAgICAgICAgICAgID8gc3RyaW5nW11cbiAgICAgICAgICAgICAgICAgICAgOiBuZXZlcilcbiAgICAgICAgfCAodHJ1ZSBleHRlbmRzIFROdWxsYWJsZSA/IG51bGwgOiBuZXZlcilcbiAgICA6IG5ldmVyO1xuXG4vLyDqsrDqs7wg7YOA7J6FIOqwgOuPheyEseydhCDsnITtlZwg7YOA7J6FIO2ZleyepVxuZXhwb3J0IHR5cGUgRXhwYW5kPFQ+ID0gVCBleHRlbmRzIGFueVtdXG4gID8geyBbSyBpbiBrZXlvZiBUWzBdXTogVFswXVtLXSB9W10gLy8g67Cw7Je07J2066m0IOyyqyDrsojsp7gg7JqU7IaM66W8IEV4cGFuZO2VmOqzoCDrsLDsl7TroZwg6rCQ7IyIXG4gIDogVCBleHRlbmRzIG9iamVjdFxuICAgID8geyBbSyBpbiBrZXlvZiBUXTogVFtLXSB9XG4gICAgOiBUO1xuXG50eXBlIElzU2luZ2xlS2V5PFRUYWJsZXMgZXh0ZW5kcyBvYmplY3Q+ID0ga2V5b2YgVFRhYmxlcyBleHRlbmRzIGluZmVyIEtcbiAgPyBLIGV4dGVuZHMga2V5b2YgVFRhYmxlc1xuICAgID8ga2V5b2YgVFRhYmxlcyBleHRlbmRzIEsgLy8g7Jet67Cp7ZalIOyytO2BrOuhnCDri6jsnbwg7YKkIO2ZleyduFxuICAgICAgPyB0cnVlXG4gICAgICA6IGZhbHNlXG4gICAgOiBmYWxzZVxuICA6IGZhbHNlO1xuXG5leHBvcnQgdHlwZSBTaW5nbGVUYWJsZVZhbHVlPFRUYWJsZXMgZXh0ZW5kcyBvYmplY3Q+ID1cbiAgSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlID8gVFRhYmxlc1trZXlvZiBUVGFibGVzXSA6IG5ldmVyO1xuXG4vLyBfX2hhc0RlZmF1bHRfX+yXkCDtj6ztlajrkJwg7YKk65Ok7J2EIFB1cmlUYWJsZTxUPuydmCDtgqTroZwg7KCc7ZWcXG50eXBlIEhhc0RlZmF1bHRLZXlzPFQ+ID0gVCBleHRlbmRzIHsgX19oYXNEZWZhdWx0X186IHJlYWRvbmx5IChpbmZlciBLKVtdIH1cbiAgPyBFeHRyYWN0PEssIGtleW9mIFB1cmlUYWJsZTxUPj5cbiAgOiBuZXZlcjtcblxuLy8gX19nZW5lcmF0ZWRfX+yXkCDtj6ztlajrkJwg7YKk65OkIChJTlNFUlQg7IucIOygnOyZuO2VtOyVvCDtlagpXG50eXBlIEdlbmVyYXRlZEtleXM8VD4gPSBUIGV4dGVuZHMgeyBfX2dlbmVyYXRlZF9fOiByZWFkb25seSAoaW5mZXIgSylbXSB9XG4gID8gRXh0cmFjdDxLLCBrZXlvZiBQdXJpVGFibGU8VD4+XG4gIDogbmV2ZXI7XG5cbi8vIF9fdmlydHVhbF9xdWVyeV9f7JeQIO2PrO2VqOuQnCDtgqTrk6QgKElOU0VSVCDsi5wg7KCc7Jm47ZW07JW8IO2VqClcbnR5cGUgVmlydHVhbFF1ZXJ5S2V5czxUPiA9IFQgZXh0ZW5kcyB7IF9fdmlydHVhbF9xdWVyeV9fOiByZWFkb25seSAoaW5mZXIgSylbXSB9XG4gID8gRXh0cmFjdDxLLCBrZXlvZiBQdXJpVGFibGU8VD4+XG4gIDogbmV2ZXI7XG5cbi8vIEluc2VydCDtg4DsnoU6IOuplO2DgOuNsOydtO2EsCDsoJzqsbAg7ZuELCBfX2hhc0RlZmF1bHRfXyDsu6zrn7zrk6Trp4wgb3B0aW9uYWzroZwg7LKY66asLCBnZW5lcmF0ZWQvdmlydHVhbFF1ZXJ5IOy7rOufvOydgCDsmYTsoITtnogg7KCc7Jm4XG5leHBvcnQgdHlwZSBJbnNlcnREYXRhPFQ+ID0gT21pdDxcbiAgUHVyaVRhYmxlPFQ+LFxuICBJbnRlcm5hbFR5cGVLZXlzIHwgSGFzRGVmYXVsdEtleXM8VD4gfCBHZW5lcmF0ZWRLZXlzPFQ+IHwgVmlydHVhbFF1ZXJ5S2V5czxUPlxuPiAmIHtcbiAgW0sgaW4gSGFzRGVmYXVsdEtleXM8VD5dPzogUHVyaVRhYmxlPFQ+W0tdO1xufTtcblxuLy8gSW5zZXJ0IFJlc3VsdCDtg4DsnoVcbmV4cG9ydCB0eXBlIEluc2VydFJlc3VsdCA9IFBpY2s8UXVlcnlSZXN1bHQsIFwiY29tbWFuZFwiIHwgXCJyb3dDb3VudFwiIHwgXCJyb3dzXCIgfCBcIm9pZFwiPjtcblxuLy8gU3Vic2V0UXVlcnnrpbwg7JyE7ZWcIO2DgOyehSDsnKDti7jrpqzti7BcbmV4cG9ydCB0eXBlIEV4dHJhY3RUVGFibGVzPFQgZXh0ZW5kcyBQdXJpPGFueSwgYW55LCBhbnk+PiA9XG4gIFQgZXh0ZW5kcyBQdXJpPGFueSwgaW5mZXIgVFRhYmxlcywgYW55PiA/IFRUYWJsZXMgOiBuZXZlcjtcbmV4cG9ydCB0eXBlIFVuaW9uRXh0cmFjdGVkVFRhYmxlczxcbiAgU3Vic2V0S2V5IGV4dGVuZHMgc3RyaW5nLFxuICBTdWJzZXRRdWVyaWVzIGV4dGVuZHMgUmVjb3JkPFN1YnNldEtleSwgUHVyaVN1YnNldEZuPixcbj4gPSB7XG4gIFtLIGluIFN1YnNldEtleV06IEV4dHJhY3RUVGFibGVzPFJldHVyblR5cGU8U3Vic2V0UXVlcmllc1tLXT4+O1xufVtTdWJzZXRLZXldO1xuXG4vLyBPTiBDT05GTElDVCDrjIDsg4Eg7YOA7J6FXG4vLyAtIOuLqOydvCDsu6zrn7w6IFwiZW1haWxcIlxuLy8gLSDrs7XsiJgg7Lus65+8OiBbXCJ1c2VyX2lkXCIsIFwicHJvZHVjdF9pZFwiXVxuZXhwb3J0IHR5cGUgT25Db25mbGljdFRhcmdldCA9IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4vLyBPTiBDT05GTElDVCDslaHshZgg7YOA7J6FXG4vLyAtIFwibm90aGluZ1wiOiBETyBOT1RISU5HXG4vLyAtIHsgdXBkYXRlOiBbLi4uXSB9OiBETyBVUERBVEVcbmV4cG9ydCB0eXBlIE9uQ29uZmxpY3RBY3Rpb248VFRhYmxlcyBleHRlbmRzIG9iamVjdD4gPVxuICB8IFwibm90aGluZ1wiXG4gIHwge1xuICAgICAgdXBkYXRlOlxuICAgICAgICB8IEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5bXSAvLyDrsLDsl7Qg7ZiV7YOcIC0gW1wibmFtZVwiLCBcImVtYWlsXCJdXG4gICAgICAgIHwgV2hlcmVDb25kaXRpb248VFRhYmxlcz47IC8vIOqwneyytCDtmJXtg5wgLSB7IG5hbWU6IFwiSm9oblwiLCBjb3VudDogUHVyaS5yYXdOdW1iZXIoLi4uKSB9XG4gICAgfTtcblxuLy8gRksg7Lus65+866qFIOy2lOy2nCDsnKDti7jrpqzti7Ag7YOA7J6FIC0gRGF0YWJhc2VGb3JlaWduS2V5cyDtmZzsmqlcbmV4cG9ydCB0eXBlIEZvcmVpZ25LZXlDb2x1bW5zPFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxEYXRhYmFzZVNjaGVtYUV4dGVuZD4+ID1cbiAgVFRhYmxlIGV4dGVuZHMga2V5b2YgRGF0YWJhc2VGb3JlaWduS2V5cyA/IERhdGFiYXNlRm9yZWlnbktleXNbVFRhYmxlXSA6IG5ldmVyO1xuXG4vLyBVbmlvbuydhCBJbnRlcnNlY3Rpb27snLzroZwg67OA7ZmY7ZWY64qUIOycoO2LuOumrO2LsFxudHlwZSBVbmlvblRvSW50ZXJzZWN0aW9uPFU+ID0gKFUgZXh0ZW5kcyBhbnkgPyAoazogVSkgPT4gdm9pZCA6IG5ldmVyKSBleHRlbmRzIChrOiBpbmZlciBJKSA9PiB2b2lkXG4gID8gSVxuICA6IG5ldmVyO1xuXG4vLyBTZWxlY3RBbGwg7IucIOuqqOuToCDsobDsnbjrkJwg7YWM7J2067iU7J2YIOy7rOufvCDtj6ztlahcbmV4cG9ydCB0eXBlIFNlbGVjdEFsbFJlc3VsdDxUVGFibGVzIGV4dGVuZHMgb2JqZWN0PiA9IFVuaW9uVG9JbnRlcnNlY3Rpb248XG4gIHtcbiAgICBbSyBpbiBrZXlvZiBUVGFibGVzXTogVFRhYmxlc1tLXSBleHRlbmRzIGluZmVyIFRcbiAgICAgID8gVCBleHRlbmRzIExlZnRKb2luZWRNYXJrZXJcbiAgICAgICAgPyBQYXJ0aWFsPE9taXRJbnRlcm5hbFR5cGVLZXlzPFQ+PiAvLyBMRUZUIEpPSU7snYAgbnVsbGFibGUsIOuplO2DgOuNsOydtO2EsCDsoJzqsbBcbiAgICAgICAgOiBPbWl0SW50ZXJuYWxUeXBlS2V5czxUPiAvLyBJTk5FUiBKT0lO7J2AIG5vbi1udWxsYWJsZSwg66mU7YOA642w7J207YSwIOygnOqxsFxuICAgICAgOiBuZXZlcjtcbiAgfVtrZXlvZiBUVGFibGVzXVxuPjtcblxuLy8gRlRTIO2DgOyehVxudHlwZSBUc1F1ZXJ5UGFyc2VyID0gXCJ0b190c3F1ZXJ5XCIgfCBcInBsYWludG9fdHNxdWVyeVwiIHwgXCJwaHJhc2V0b190c3F1ZXJ5XCIgfCBcIndlYnNlYXJjaF90b190c3F1ZXJ5XCI7XG5leHBvcnQgdHlwZSBUc1F1ZXJ5Q29uZmlnID0gXCJzaW1wbGVcIiB8IFwiZW5nbGlzaFwiO1xuZXhwb3J0IHR5cGUgVHNRdWVyeU9wdGlvbnMgPSB7XG4gIHBhcnNlcj86IFRzUXVlcnlQYXJzZXI7XG4gIGNvbmZpZz86IFRzUXVlcnlDb25maWc7XG59O1xuXG5leHBvcnQgdHlwZSBUc0hpZ2hsaWdodE9wdGlvbnMgPSB7XG4gIC8qKiDsv7zrpqwg67OA7ZmYIO2VqOyImCAo6riw67O46rCSOiBcIndlYnNlYXJjaF90b190c3F1ZXJ5XCIpICovXG4gIHBhcnNlcj86IFRzUXVlcnlQYXJzZXI7XG4gIC8qKiDthY3siqTtirgg6rKA7IOJIOyEpOyglSAo6riw67O46rCSOiBcInNpbXBsZVwiKSAqL1xuICBjb25maWc/OiBUc1F1ZXJ5Q29uZmlnO1xuICAvKiog7LWc64yAIOuLqOyWtCDsiJggKOq4sOuzuOqwkjogMzUpICovXG4gIG1heFdvcmRzPzogbnVtYmVyO1xuICAvKiog7LWc7IaMIOuLqOyWtCDsiJggKOq4sOuzuOqwkjogMTUpICovXG4gIG1pbldvcmRzPzogbnVtYmVyO1xuICAvKiog7Zek65Oc65287J24IOyLnOyekS/rgZ3sl5DshJwg7KCc6rGw7ZWgIOynp+ydgCDri6jslrQg6ri47J20ICjquLDrs7jqsJI6IDMpICovXG4gIHNob3J0V29yZD86IG51bWJlcjtcbiAgLyoqIHRydWXrqbQg7KCE7LK0IOusuOyEnOulvCDtl6Trk5zrnbzsnbjsnLzroZwg7IKs7JqpICjquLDrs7jqsJI6IGZhbHNlKSAqL1xuICBoaWdobGlnaHRBbGw/OiBib29sZWFuO1xuICAvKiog7ZGc7Iuc7ZWgIOy1nOuMgCDthY3siqTtirgg7KGw6rCBIOyImCAo6riw67O46rCSOiAwLCDsobDqsIEg66+47IKs7JqpKSAqL1xuICBtYXhGcmFnbWVudHM/OiBudW1iZXI7XG4gIC8qKiDsv7zrpqwg64uo7Ja0IOyLnOyekSDqtazrtoTsnpAgKOq4sOuzuOqwkjogXCI8Yj5cIikgKi9cbiAgc3RhcnRTZWw/OiBzdHJpbmc7XG4gIC8qKiDsv7zrpqwg64uo7Ja0IOuBnSDqtazrtoTsnpAgKOq4sOuzuOqwkjogXCI8L2I+XCIpICovXG4gIHN0b3BTZWw/OiBzdHJpbmc7XG4gIC8qKiDsobDqsIEg6rWs67aE7J6QICjquLDrs7jqsJI6IFwiIC4uLiBcIikgKi9cbiAgZnJhZ21lbnREZWxpbWl0ZXI/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBUc1JhbmtPcHRpb25zID0ge1xuICBwYXJzZXI/OiBUc1F1ZXJ5UGFyc2VyO1xuICBjb25maWc/OiBUc1F1ZXJ5Q29uZmlnO1xuICAvKiog6rCA7KSR7LmYIOuwsOyXtCBbRCwgQywgQiwgQV0gKOq4sOuzuOqwkjogWzAuMSwgMC4yLCAwLjQsIDEuMF0pICovXG4gIHdlaWdodHM/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgLyoqXG4gICAqIOygleq3nO2ZlCDsmLXshZhcbiAgICogMDog66y47IScIOq4uOydtCDrrLTsi5wgKOq4sOuzuOqwkilcbiAgICogMTogMSArIGxvZyjrrLjshJwg6ri47J20KeuhnCDrgpjriJRcbiAgICogMjog66y47IScIOq4uOydtOuhnCDrgpjriJRcbiAgICogNDog7Y+J6regIOyhsO2ZlCDqsbDrpqzroZwg64KY64iUICh0c19yYW5rX2Nk66eMKVxuICAgKiA4OiDqs6DsnKAg64uo7Ja0IOyImOuhnCDrgpjriJRcbiAgICogMTY6IDEgKyBsb2co6rOg7JygIOuLqOyWtCDsiJgp66GcIOuCmOuIlFxuICAgKiAzMjogcmFuay8ocmFuaysxKSAtPiAwfjEg7IKs7J207J2YIOqwkuycvOuhnCDsiqTsvIDsnbzrp4FcbiAgICpcbiAgICog67mE7Yq466eI7Iqk7YGs66W8IOyCrOyaqe2VmOyXrCDsmLXshZjsnYQg7KGw7ZWp7ZWgIOyImCDsnojsnYxcbiAgICog7JiIOiA4IHwgMzIgLT4g6rOg7JygIOuLqOyWtCDsiJjroZwg64KY64iE6rOgIDB+MSDsiqTsvIDsnbzrp4FcbiAgICovXG4gIG5vcm1hbGl6YXRpb24/OiBudW1iZXI7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0NBK1NhLGtCQUFrQjtFQUFDO0VBQU07RUFBSztDQUFLIn0=
|
|
14
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyaS50eXBlcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvcHVyaS50eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBveGxpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovIC8vIFB1cmkudHlwZXMudHPripQg64uk7JaR7ZWcIO2DgOyeheydhCDsgqzsmqntlZjqs6Ag7J6I7Iq164uI64ukLlxuXG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgdHlwZSBRdWVyeVJlc3VsdCB9IGZyb20gXCJwZ1wiO1xuXG5pbXBvcnQgeyB0eXBlIERhdGFiYXNlRm9yZWlnbktleXMsIHR5cGUgRGF0YWJhc2VTY2hlbWFFeHRlbmQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgUHVyaSB9IGZyb20gXCIuL3B1cmlcIjtcbmltcG9ydCB7IHR5cGUgUHVyaVN1YnNldEZuIH0gZnJvbSBcIi4vcHVyaS1zdWJzZXQudHlwZXNcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIOuCtOu2gCDtg4DsnoUg7YKkICjrqZTtg4DrjbDsnbTthLApXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxudHlwZSBGdWxsdGV4dEtleSA9IFwiX19mdWxsdGV4dF9fXCI7XG50eXBlIFZpcnR1YWxLZXkgPSBcIl9fdmlydHVhbF9fXCI7XG50eXBlIExlZnRKb2luZWRLZXkgPSBcIl9fbGVmdEpvaW5lZF9fXCI7XG50eXBlIEhhc0RlZmF1bHQgPSBcIl9faGFzRGVmYXVsdF9fXCI7XG50eXBlIEdlbmVyYXRlZEtleSA9IFwiX19nZW5lcmF0ZWRfX1wiO1xudHlwZSBWZWN0b3JLZXkgPSBcIl9fdmVjdG9yX19cIjtcbnR5cGUgSnNvbktleSA9IFwiX19qc29uX19cIjtcbnR5cGUgVmlydHVhbFF1ZXJ5S2V5ID0gXCJfX3ZpcnR1YWxfcXVlcnlfX1wiO1xudHlwZSBTcWxFeHByZXNzaW9uVHlwZSA9IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcImRhdGVcIiB8IFwic3RyaW5nW11cIiB8IFwidHN2ZWN0b3JcIjtcblxudHlwZSBJbnRlcm5hbFR5cGVLZXlzID1cbiAgfCBGdWxsdGV4dEtleVxuICB8IFZpcnR1YWxLZXlcbiAgfCBMZWZ0Sm9pbmVkS2V5XG4gIHwgSGFzRGVmYXVsdFxuICB8IEdlbmVyYXRlZEtleVxuICB8IFZlY3RvcktleVxuICB8IEpzb25LZXlcbiAgfCBWaXJ0dWFsUXVlcnlLZXk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyDtg4DsnoUg7Jyg7Yu466as7YuwXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBfX3ZlY3Rvcl9fIOuplO2DgOuNsOydtO2EsOyXkOyEnCDrsqHthLAg7Lus65+8IOy2lOy2nFxudHlwZSBWZWN0b3JDb2x1bW5LZXlzPFQ+ID0gVCBleHRlbmRzIHsgW0sgaW4gVmVjdG9yS2V5XTogcmVhZG9ubHkgKGluZmVyIFYpW10gfVxuICA/IFYgJiBzdHJpbmdcbiAgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgVmVjdG9yQ29sdW1uczxUVGFibGVzIGV4dGVuZHMgb2JqZWN0PiA9XG4gIHwge1xuICAgICAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogYCR7VEFsaWFzICYgc3RyaW5nfS4ke1ZlY3RvckNvbHVtbktleXM8VFRhYmxlc1tUQWxpYXNdPn1gO1xuICAgIH1ba2V5b2YgVFRhYmxlc11cbiAgfCAoSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlID8gVmVjdG9yQ29sdW1uS2V5czxUVGFibGVzW2tleW9mIFRUYWJsZXNdPiA6IG5ldmVyKTtcblxuLy8gX19qc29uX18g66mU7YOA642w7J207YSw7JeQ7IScIEpTT04g7Lus65+8IOy2lOy2nFxudHlwZSBKc29uQ29sdW1uS2V5czxUPiA9IFQgZXh0ZW5kcyB7IFtLIGluIEpzb25LZXldOiByZWFkb25seSAoaW5mZXIgSilbXSB9ID8gSiAmIHN0cmluZyA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBKc29uQ29sdW1uczxUVGFibGVzIGV4dGVuZHMgb2JqZWN0PiA9XG4gIHwge1xuICAgICAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogYCR7VEFsaWFzICYgc3RyaW5nfS4ke0pzb25Db2x1bW5LZXlzPFRUYWJsZXNbVEFsaWFzXT59YDtcbiAgICB9W2tleW9mIFRUYWJsZXNdXG4gIHwgKElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZSA/IEpzb25Db2x1bW5LZXlzPFRUYWJsZXNba2V5b2YgVFRhYmxlc10+IDogbmV2ZXIpO1xuXG50eXBlIEpzb25TdXBlcnNldE5lc3RlZFZhbHVlPFQ+ID0gVCBleHRlbmRzIHJlYWRvbmx5IChpbmZlciBFbGVtZW50KVtdXG4gID8gSnNvblN1cGVyc2V0TmVzdGVkVmFsdWU8RWxlbWVudD5bXVxuICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgICA/IHsgW0sgaW4ga2V5b2YgVF0/OiBKc29uU3VwZXJzZXROZXN0ZWRWYWx1ZTxUW0tdPiB9XG4gICAgOiBUO1xuXG5leHBvcnQgdHlwZSBKc29uU3VwZXJzZXRWYWx1ZTxUPiA9IEpzb25TdXBlcnNldE5lc3RlZFZhbHVlPE5vbk51bGxhYmxlPFQ+PjtcblxuLy8g7YWM7J2067iU66qFIO2DgOyehVxuZXhwb3J0IHR5cGUgVGFibGVOYW1lPFRTY2hlbWE+ID0ga2V5b2YgVFNjaGVtYSAmIHN0cmluZztcblxuLy8g7YWM7J2067iU7J2YIGlkKFBLKSDtg4DsnoXsnYQg7LaU7LacXG5leHBvcnQgdHlwZSBJZFR5cGU8VFNjaGVtYSwgVFRhYmxlIGV4dGVuZHMga2V5b2YgVFNjaGVtYT4gPSBUU2NoZW1hW1RUYWJsZV0gZXh0ZW5kcyB7IGlkOiBpbmZlciBJIH1cbiAgPyBJXG4gIDogbnVtYmVyO1xuXG4vLyB2aXJ0dWFsIOy7rOufvCDtg4DsnoUg7LaU7LacXG50eXBlIFZpcnR1YWxLZXlzPFQ+ID0gVCBleHRlbmRzIHsgW0sgaW4gVmlydHVhbEtleV06IHJlYWRvbmx5IChpbmZlciBWKVtdIH0gPyBWICYgc3RyaW5nIDogbmV2ZXI7XG5cbi8vIHZpcnR1YWwg7Lus65+8IOygnOqxsFxudHlwZSBTdHJpcFZpcnR1YWw8VD4gPSBPbWl0PFQsIFZpcnR1YWxLZXlzPFQ+PjtcblxuLy8gTEVGVCBKT0lOIOuniOy7pCAtIG51bGxhYmxlIEZL66GcIOyhsOyduOuQnCDthYzsnbTruJRcbi8vIOydtCDrp4jsu6TripQgbnVsbGFibGUgRksgKyBsZWZ0Sm9pbiDsobDtlansl5DshJzrp4wg67aZ7Iq164uI64ukLlxuLy8gam9pbiArIEZLIG51bGxhYmxlIC0+IOyViCDrtpnsnYxcbi8vIGpvaW4gKyBGSyBub24tbnVsbGFibGUgLT4g7JWIIOu2meydjFxuLy8gbGVmdEpvaW4gKyBGSyBub24tbnVsbGFibGUgLT4g7JWIIOu2meydjFxuLy8gbGVmdEpvaW4gKyBGSyBudWxsYWJsZSAtPiDrtpnsnYwhXG5leHBvcnQgdHlwZSBMZWZ0Sm9pbmVkTWFya2VyID0geyBbSyBpbiBMZWZ0Sm9pbmVkS2V5XTogdHJ1ZSB9O1xuXG4vLyDrqZTtg4DrjbDsnbTthLAg7ZWE65OcIOygnOyZuO2VnCDsi6TsoJwg7JeU7Yuw7YuwIOy7rOufvFxuZXhwb3J0IHR5cGUgQ29sdW1uS2V5czxUPiA9IEV4Y2x1ZGU8a2V5b2YgU3RyaXBWaXJ0dWFsPFQ+LCBJbnRlcm5hbFR5cGVLZXlzPiAmIHN0cmluZztcblxuLy8gdmlydHVhbCDsu6zrn7wg7KCc6rGwIO2bhCBfX2Z1bGx0ZXh0X18g7Jyg7KeAXG5leHBvcnQgdHlwZSBQdXJpVGFibGU8VD4gPSBPbWl0PFN0cmlwVmlydHVhbDxUPiwgVmlydHVhbEtleT47XG5cbi8vIOuCtOu2gCDtg4DsnoUg7YKkIOygnOyZuCAo7Iuk7KCcIOy7rOufvOunjCDrgqjquYApXG5leHBvcnQgdHlwZSBPbWl0SW50ZXJuYWxUeXBlS2V5czxUPiA9IE9taXQ8VCwgSW50ZXJuYWxUeXBlS2V5cz47XG5cbi8vIFRUYWJsZXPsnZgg66qo65OgIO2FjOydtOu4lOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIOy7rOufvCDqsr3roZxcbmV4cG9ydCB0eXBlIEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcyBleHRlbmRzIG9iamVjdD4gPSAoXG4gIHwge1xuICAgICAgW1RBbGlhcyBpbiBrZXlvZiBUVGFibGVzXTogYCR7VEFsaWFzICYgc3RyaW5nfS4ke0NvbHVtbktleXM8VFRhYmxlc1tUQWxpYXNdPn1gO1xuICAgIH1ba2V5b2YgVFRhYmxlc11cbiAgfCAoSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IENvbHVtbktleXM8VFRhYmxlc1trZXlvZiBUVGFibGVzXT4gLy8g64uo7J28IO2FjOydtOu4lOydtOuptCDsu6zrn7zrqoXrp4zrj4Qg7ZeI7JqpXG4gICAgICA6IG5ldmVyKVxuKSAmXG4gIHN0cmluZztcblxuLy8g7Iir7J6QIO2DgOyehSDsu6zrn7zrp4wg7LaU7Lac7ZWY64qUIOycoO2LuOumrO2LsCDtg4DsnoVcbnR5cGUgTnVtZXJpY0NvbHVtbktleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50IHwgbnVsbCB8IHVuZGVmaW5lZCA/IEsgOiBuZXZlcjtcbn1ba2V5b2YgVF0gJlxuICBzdHJpbmc7XG5cbi8vIFRUYWJsZXPsnZgg66qo65OgIO2FjOydtOu4lOyXkOyEnCDsiKvsnpAg7YOA7J6FIOy7rOufvOunjCDstpTstpxcbmV4cG9ydCB0eXBlIE51bWVyaWNDb2x1bW5zPFRUYWJsZXMgZXh0ZW5kcyBvYmplY3Q+ID1cbiAgfCB7XG4gICAgICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7TnVtZXJpY0NvbHVtbktleXM8VFRhYmxlc1tUQWxpYXNdPn1gO1xuICAgIH1ba2V5b2YgVFRhYmxlc11cbiAgfCAoSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IE51bWVyaWNDb2x1bW5LZXlzPFRUYWJsZXNba2V5b2YgVFRhYmxlc10+IC8vIOuLqOydvCDthYzsnbTruJTsnbTrqbQg7Lus65+866qF66eM64+EIO2XiOyaqVxuICAgICAgOiBuZXZlcik7XG5cbi8vIEdyb3VwIEJ5LCBPcmRlciBCeSwgSGF2aW5nIOuTseyXkOyEnCDshKDtg50g6rCA64ql7ZWcIOy7rOufvFxuZXhwb3J0IHR5cGUgUmVzdWx0QXZhaWxhYmxlQ29sdW1uczxUVGFibGVzIGV4dGVuZHMgb2JqZWN0LCBUUmVzdWx0ID0gYW55PiA9XG4gIHwgQXZhaWxhYmxlQ29sdW1uczxUVGFibGVzPlxuICB8IGAke2tleW9mIFRSZXN1bHQgJiBzdHJpbmd9YDtcblxuLy8gU2VsZWN0IOqwkiDtg4DsnoUg7ZmV7J6lICjri6jsnbwg7Lus65+8IOuYkOuKlCBTUUwg7ZGc7ZiE7IudKVxuZXhwb3J0IHR5cGUgU2VsZWN0VmFsdWU8VFRhYmxlcyBleHRlbmRzIG9iamVjdD4gPVxuICB8IEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5cbiAgfCBTcWxFeHByZXNzaW9uPFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcImRhdGVcIiB8IFwic3RyaW5nW11cIiwgYm9vbGVhbj47XG5cbi8vIOykkeyyqSBTZWxlY3Qg6rCd7LK0IO2DgOyehSAo7J6s6reA7KCBKVxuLy8g7JiIOiB7IHBhcmVudDogeyBpZDogXCJwYXJlbnQuaWRcIiwgbmFtZTogXCJwYXJlbnQubmFtZVwiIH0gfVxuZXhwb3J0IHR5cGUgTmVzdGVkU2VsZWN0T2JqZWN0PFRUYWJsZXMgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBba2V5OiBzdHJpbmddOiBTZWxlY3RWYWx1ZTxUVGFibGVzPiB8IE5lc3RlZFNlbGVjdE9iamVjdDxUVGFibGVzPjtcbn07XG5cbi8vIFNlbGVjdCDqsJ3ssrQg7YOA7J6FIChmbGF0IOuYkOuKlCDspJHssqkg7ZeI7JqpKVxuZXhwb3J0IHR5cGUgU2VsZWN0T2JqZWN0PFRUYWJsZXMgZXh0ZW5kcyBvYmplY3Q+ID0gTmVzdGVkU2VsZWN0T2JqZWN0PFRUYWJsZXM+O1xuXG4vLyDqsJLsnbQg7KSR7LKpIOqwneyytOyduOyngCDtjJDrs4TtlZjripQg7Zes7Y28IO2DgOyehVxudHlwZSBJc05lc3RlZE9iamVjdDxUPiA9IFQgZXh0ZW5kcyBzdHJpbmdcbiAgPyBmYWxzZVxuICA6IFQgZXh0ZW5kcyBTcWxFeHByZXNzaW9uPFNxbEV4cHJlc3Npb25UeXBlLCBib29sZWFuPlxuICAgID8gZmFsc2VcbiAgICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZTtcblxuLy8g7Lus65+87J20IG51bGxhYmxl7J247KeAIO2ZleyduCAo7Iqk7YKk66eI7JeQ7IScIOyngeygkSDstpTstpwpXG4vLyDsmIg6IElzTnVsbGFibGVDb2x1bW48VFRhYmxlcywgXCJlbXBsb3llZXMuZGVwYXJ0bWVudF9pZFwiPiDihpIgZGVwYXJ0bWVudF9pZOqwgCBudW1iZXIgfCBudWxs7J2066m0IHRydWVcbmV4cG9ydCB0eXBlIElzTnVsbGFibGVDb2x1bW48XG4gIFRUYWJsZXMsXG4gIFBhdGggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gUGF0aCBleHRlbmRzIGAke2luZmVyIFRBbGlhc30uJHtpbmZlciBUQ29sdW1ufWBcbiAgPyBUQWxpYXMgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBUQ29sdW1uIGV4dGVuZHMga2V5b2YgVFRhYmxlc1tUQWxpYXNdXG4gICAgICA/IG51bGwgZXh0ZW5kcyBUVGFibGVzW1RBbGlhc11bVENvbHVtbl1cbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2VcbiAgICAgIDogZmFsc2VcbiAgICA6IGZhbHNlXG4gIDogZmFsc2U7XG5cbi8vIEZLIG51bGxhYmxlIOyXrOu2gOyXkCDrlLDrpbgg66eI7LukIO2DgOyehSDqsrDsoJVcbi8vIG51bGxhYmxlIEZL66GcIGxlZnRKb2luIOKGkiBMZWZ0Sm9pbmVkTWFya2VyICjqsJ3ssrQg7J6Q7LK06rCAIG51bGzsnbwg7IiYIOyeiOydjClcbi8vIG5vbi1udWxsIEZL66GcIGxlZnRKb2luIOKGkiDrp4jsu6Qg7JeG7J2MICjrtoDrqqjqsIAg7J6I7Jy866m0IOyekOyLneuPhCDrsJjrk5zsi5wg7J6I7J2MKVxuZXhwb3J0IHR5cGUgTGVmdEpvaW5NYXJrZXJGb3I8VFRhYmxlcywgUGF0aCBleHRlbmRzIHN0cmluZz4gPVxuICBJc051bGxhYmxlQ29sdW1uPFRUYWJsZXMsIFBhdGg+IGV4dGVuZHMgdHJ1ZSA/IExlZnRKb2luZWRNYXJrZXIgOiB7fTtcblxuLy8g7KO87Ja07KeEIO2FjOydtOu4lOydtCBGSyBudWxsYWJsZeuhnCBsZWZ0Sm9pbiDrkJwg7YWM7J2067iU7J247KeAIO2ZleyduO2VqeuLiOuLpC5cbi8vIOyCrOyLpCBMZWZ0Sm9pbk1hcmtlcuqwgCDrtpnsl4jripTsp4Ag7ZmV7J247ZWY64qU6rKMIOuLpOyeheuLiOuLpC5cbi8vIOydtCDrp4jsu6TripQgRksgbnVsbGFibGUgKyBsZWZ0Sm9pbiDsobDtlansl5DshJzrp4wg67aZ7Iq164uI64ukLlxudHlwZSBJc051bGxhYmxlSm9pbmVkVGFibGU8VFRhYmxlcywgVGFibGVLZXk+ID0gVGFibGVLZXkgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gID8gVFRhYmxlc1tUYWJsZUtleV0gZXh0ZW5kcyBMZWZ0Sm9pbmVkTWFya2VyXG4gICAgPyB0cnVlIC8vIExlZnRKb2luZWRNYXJrZXLqsIAg7J6I7Jy866m0IG51bGxhYmxlXG4gICAgOiBmYWxzZVxuICA6IGZhbHNlO1xuXG4vLyDqsr3roZwg7KGw7ZWpIO2XrO2NvCAocHJlZml46rCAIOyXhuycvOuptCBrZXnrp4wsIOyeiOycvOuptCBwcmVmaXhfX2tleSlcbnR5cGUgSm9pblBhdGg8UHJlZml4IGV4dGVuZHMgc3RyaW5nLCBLZXkgZXh0ZW5kcyBzdHJpbmc+ID0gUHJlZml4IGV4dGVuZHMgXCJcIlxuICA/IEtleVxuICA6IGAke1ByZWZpeH1fXyR7S2V5fWA7XG5cbi8vIFNlbGVjdCDqsrDqs7wg7YOA7J6F7J2EIOy2lOuhoO2VtOyjvOuKlCDsuZzqtazsnoXri4jri6QuXG4vLyDsnbQg7YOA7J6F7J2AIFB1cmnsnZggc2VsZWN0LCBhcHBlbmRTZWxlY3Tsl5DshJwgVFJlc3VsdOuhnCDsgqzsmqnrkKnri4jri6QuXG4vL1xuLy8gU2NoZW1h66W8IOydveyWtOyEnCBGS+ydmCBudWxsYWJpbGl0eeyXkCDrlLDrnbwgam9pbuuQnCDqsJ3ssrTsnZgg7YOA7J6F7J2EIOy2lOuhoO2VtOyjvOuKlCDquLDriqXsnbQg7J6I7Iq164uI64ukLlxuLy8g7J206rKMIOustOyKqCDshozrpqzrg5A/IEZL6rCAIG51bGxhYmxl7J24642wIGxlZnRKb2lu65CY7JeI64uk66m0LCDtlbTri7kg6rCd7LK064qUIG51bGxhYmxlIO2VtOyVvCDtlajsnYQg7YOA7J6FIOy2lOuhoOycvOuhnCDrsJjsmIHtlbTspIDri6TripQg6rKD7J6F64uI64ukLlxuLy8g67CY66m0IEZL6rCAIG5vbi1udWxsYWJsZeydtOqxsOuCmCDqt7jrg6Ugam9pbuycvOuhnCDsnbTslrTsoYzri6TrqbQg7ZW064u5IOqwneyytOuKlCBub24tbnVsbGFibGXtlaAg6rKB64uI64ukLlxuLy8g66y866GgIOqwneyytCDrgrTrtoDsnZggbnVsbGFiaWxpdHnripQg65iQIOuzhOqwnOuhnCDstpTroaDrkKnri4jri6QuXG4vL1xuLy8g7JWE656Y7JeQ64+EIFBhcnNlU2VsZWN0T2JqZWN0V2l0aFBhdGjrpbwg67mE66Gv7ZW0IEV4dHJhY3RDb2x1bW5UeXBlLCBFeHRyYWN0Q29sdW1uVHlwZVJhdyDrk7HsnZgg7YOA7J6F7J20IOyeiOyKteuLiOuLpC5cbi8vIOydtOuTpOydmCDsl63tlaDsnYAg64uk7J2M6rO8IOqwmeyKteuLiOuLpDpcbi8vIC0gUGFyc2UqOiDqsJ3ssrQg66CI67Ko7JeQ7IScIOykkeyyqSDqtazsobDrpbwg7Iic7ZqM7ZWY66mwIOqwneyytOyXkCB8IG51bGzsnYQg67aZ7J287KeAIOqysOygle2VqeuLiOuLpC5cbi8vIC0gRXh0cmFjdCo6IO2VhOuTnCDroIjrsqjsl5DshJwgXCJ0YWJsZS5jb2x1bW5cIiDqsr3roZzroZzrtoDthLAg7Iuk7KCcIO2DgOyeheydhCDstpTstpztlanri4jri6QuXG4vL1xuLy8g7JiI7IucOlxuLy8gLnNlbGVjdCh7XG4vLyAgIGlkOiBcInVzZXJzLmlkXCIsICAgICAgICAgICAvLyDihpAgRXh0cmFjdENvbHVtblR5cGXsnZgg6rKw6rO864qUIG51bWJlcuyeheuLiOuLpC5cbi8vICAgZGVwYXJ0bWVudDogeyAgICAgICAgICAgICAvLyDihpAgUGFyc2VTZWxlY3RPYmplY3RJbm5lcuyXkCDsnZjtlbQgbnVsbGFibGUg6rCd7LK066GcIOy2lOuhoOuQqeuLiOuLpC5cbi8vICAgICBpZDogXCJkZXBhcnRtZW50LmlkXCIsICAgIC8vIOKGkCBFeHRyYWN0Q29sdW1uVHlwZVJhd+ydmCDqsrDqs7zripQgbnVtYmVy7J6F64uI64ukLlxuLy8gICAgIG5hbWU6IFwiZGVwYXJ0bWVudC5uYW1lXCIgLy8g4oaQIEV4dHJhY3RDb2x1bW5UeXBlUmF37J2YIOqysOqzvOuKlCBzdHJpbmfsnoXri4jri6QuXG4vLyAgIH1cbi8vIH0pXG5leHBvcnQgdHlwZSBQYXJzZVNlbGVjdE9iamVjdDxcbiAgVFRhYmxlcyBleHRlbmRzIG9iamVjdCxcbiAgVFNlbGVjdCBleHRlbmRzIFNlbGVjdE9iamVjdDxUVGFibGVzPixcbj4gPSBQYXJzZVNlbGVjdE9iamVjdFdpdGhQYXRoPFRUYWJsZXMsIFRTZWxlY3QsIFwiXCI+O1xuXG4vLyDrs4Tsua3snbQg64uk66W4IOq0gOqzhCDqt7jro7nrj4Qg66qF7Iuc7ZWcIGlk7J2YIG51bGxhYmxlIEpPSU4g7JuQ67O47J2EIOuUsOumheuLiOuLpC5cbnR5cGUgSXNOdWxsYWJsZVNlbGVjdEdyb3VwPFRUYWJsZXMsIFRTZWxlY3QsIFBhdGggZXh0ZW5kcyBzdHJpbmc+ID1cbiAgSXNOdWxsYWJsZUpvaW5lZFRhYmxlPFRUYWJsZXMsIFBhdGg+IGV4dGVuZHMgdHJ1ZVxuICAgID8gdHJ1ZVxuICAgIDogVFNlbGVjdCBleHRlbmRzIHsgaWQ6IGAke2luZmVyIEFsaWFzfS4ke3N0cmluZ31gIH1cbiAgICAgID8gSXNOdWxsYWJsZUpvaW5lZFRhYmxlPFRUYWJsZXMsIEFsaWFzPlxuICAgICAgOiBmYWxzZTtcblxuLy8g6rK966Gc66W8IOy2lOygge2VmOuptOyEnCBTZWxlY3Qg6rKw6rO8IO2DgOyeheydhCDstpTroaDtlanri4jri6QuXG50eXBlIFBhcnNlU2VsZWN0T2JqZWN0V2l0aFBhdGg8XG4gIFRUYWJsZXMgZXh0ZW5kcyBvYmplY3QsXG4gIFRTZWxlY3QgZXh0ZW5kcyBTZWxlY3RPYmplY3Q8VFRhYmxlcz4sXG4gIFByZWZpeCBleHRlbmRzIHN0cmluZyxcbj4gPSBFeHBhbmQ8e1xuICBbSyBpbiBrZXlvZiBUU2VsZWN0XTogVFNlbGVjdFtLXSBleHRlbmRzIFNxbEV4cHJlc3Npb248U3FsRXhwcmVzc2lvblR5cGUsIGJvb2xlYW4+XG4gICAgPyBQYXJzZVNxbEV4cHJlc3Npb248VFNlbGVjdFtLXT5cbiAgICA6IElzTmVzdGVkT2JqZWN0PFRTZWxlY3RbS10+IGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBUU2VsZWN0W0tdIGV4dGVuZHMgTmVzdGVkU2VsZWN0T2JqZWN0PFRUYWJsZXM+XG4gICAgICAgID8gSXNOdWxsYWJsZVNlbGVjdEdyb3VwPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+IGV4dGVuZHMgdHJ1ZSAvLyDso7zslrTsp4Qg7YWM7J2067iU7J20IEZLIG51bGxhYmxl7JeQIGxlZnRKb2lu65CY7JeI64qU7KeAIOyXrOu2gOyXkCDrlLDrnbwgc2VsZWN0IOqysOqzvCDqsJ3ssrTsnZgg7YOA7J6F7J20IOuLrOudvOynkeuLiOuLpC5cbiAgICAgICAgICA/IEV4cGFuZDxQYXJzZVNlbGVjdE9iamVjdElubmVyPFRUYWJsZXMsIFRTZWxlY3RbS10sIEpvaW5QYXRoPFByZWZpeCwgSyAmIHN0cmluZz4+PiB8IG51bGwgLy8g66eM7JW9IO2VtOuLue2VnOuLpOuptCDtlbTri7kg6rCd7LK0IOyekOyytOuKlCBudWxsYWJsZSDtlZjrqbAsXG4gICAgICAgICAgOiBFeHBhbmQ8UGFyc2VTZWxlY3RPYmplY3RJbm5lcjxUVGFibGVzLCBUU2VsZWN0W0tdLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+Pj4gLy8g6re466CH7KeAIOyViuuLpOuptCBub24tbnVsbGFibGUg7ZWp64uI64ukLlxuICAgICAgICA6IG5ldmVyXG4gICAgICA6IEV4dHJhY3RDb2x1bW5UeXBlPFRUYWJsZXMsIFRTZWxlY3RbS10gJiBzdHJpbmc+O1xufT47XG5cbi8vIOykkeyyqSDqsJ3ssrQg64K067aA7JqpIC0gbGVmdEpvaW4gbnVsbGFibGXsnYQg6rCd7LK0IOugiOuyqOyXkOyEnCDsnbTrr7gg7LKY66as7ZaI7Jy866+A66GcIO2VhOuTnOuKlCDsm5Drs7gg7YOA7J6F7J2EIOyCrOyaqe2VqeuLiOuLpC5cbi8vIFBhcnNlU2VsZWN0T2JqZWN0V2l0aFBhdGjsmYAg6rGw7J2YIOuPmeydvO2VmOuCmCwg66eI7KeA66eJ7JeQIEV4dHJhY3RDb2x1bW5UeXBlIOuMgOyLoCBFeHRyYWN0Q29sdW1uVHlwZVJhd+ulvCDsgqzsmqntlZjsl6xcbi8vIO2VhOuTnCDroIjrsqjsl5DshJwg7KSR67O17Jy866GcIHwgbnVsbOydtCDstpTqsIDrkJjripQg6rKD7J2EIOuwqeyngO2VqeuLiOuLpC5cbnR5cGUgUGFyc2VTZWxlY3RPYmplY3RJbm5lcjxcbiAgVFRhYmxlcyBleHRlbmRzIG9iamVjdCxcbiAgVFNlbGVjdCBleHRlbmRzIFNlbGVjdE9iamVjdDxUVGFibGVzPixcbiAgUHJlZml4IGV4dGVuZHMgc3RyaW5nLFxuPiA9IEV4cGFuZDx7XG4gIFtLIGluIGtleW9mIFRTZWxlY3RdOiBUU2VsZWN0W0tdIGV4dGVuZHMgU3FsRXhwcmVzc2lvbjxTcWxFeHByZXNzaW9uVHlwZSwgYm9vbGVhbj5cbiAgICA/IFBhcnNlU3FsRXhwcmVzc2lvbjxUU2VsZWN0W0tdPlxuICAgIDogSXNOZXN0ZWRPYmplY3Q8VFNlbGVjdFtLXT4gZXh0ZW5kcyB0cnVlXG4gICAgICA/IFRTZWxlY3RbS10gZXh0ZW5kcyBOZXN0ZWRTZWxlY3RPYmplY3Q8VFRhYmxlcz5cbiAgICAgICAgPyBJc051bGxhYmxlU2VsZWN0R3JvdXA8VFRhYmxlcywgVFNlbGVjdFtLXSwgSm9pblBhdGg8UHJlZml4LCBLICYgc3RyaW5nPj4gZXh0ZW5kcyB0cnVlXG4gICAgICAgICAgPyBFeHBhbmQ8UGFyc2VTZWxlY3RPYmplY3RJbm5lcjxUVGFibGVzLCBUU2VsZWN0W0tdLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+Pj4gfCBudWxsXG4gICAgICAgICAgOiBFeHBhbmQ8UGFyc2VTZWxlY3RPYmplY3RJbm5lcjxUVGFibGVzLCBUU2VsZWN0W0tdLCBKb2luUGF0aDxQcmVmaXgsIEsgJiBzdHJpbmc+Pj5cbiAgICAgICAgOiBuZXZlclxuICAgICAgOiBFeHRyYWN0Q29sdW1uVHlwZVJhdzxUVGFibGVzLCBUU2VsZWN0W0tdICYgc3RyaW5nPjsgLy8gbGVmdEpvaW4gbnVsbGFibGUg66y07IucXG59PjtcblxuLy8g7Lus65+8IOqyveuhnOyXkOyEnCDtg4DsnoXsnYQg7LaU7Lac7ZWp64uI64ukLiBMZWZ0Sm9pbmVkTWFya2Vy6rCAIOyeiOycvOuptCB8IG51bGzsnYQg7LaU6rCA7ZWp64uI64ukLlxuLy8g7LWc7IOB7JyEIHNlbGVjdCDtlYTrk5zsl5DshJwg7IKs7Jqp65Cp64uI64ukLlxuZXhwb3J0IHR5cGUgRXh0cmFjdENvbHVtblR5cGU8XG4gIFRUYWJsZXMgZXh0ZW5kcyBvYmplY3QsXG4gIFBhdGggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gUGF0aCBleHRlbmRzIGAke2luZmVyIFRBbGlhc30uJHtpbmZlciBUQ29sdW1ufWBcbiAgPyBUQWxpYXMgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBUQ29sdW1uIGV4dGVuZHMga2V5b2YgVFRhYmxlc1tUQWxpYXNdXG4gICAgICA/IFRUYWJsZXNbVEFsaWFzXSBleHRlbmRzIExlZnRKb2luZWRNYXJrZXJcbiAgICAgICAgPyBUVGFibGVzW1RBbGlhc11bVENvbHVtbl0gfCBudWxsIC8vIExFRlQgSk9JTiAobnVsbGFibGUgRkspIOKGkiBudWxsYWJsZVxuICAgICAgICA6IFRUYWJsZXNbVEFsaWFzXVtUQ29sdW1uXSAvLyBJTk5FUiBKT0lOIOuYkOuKlCBub24tbnVsbCBGSyBsZWZ0Sm9pbiDihpIgbm9uLW51bGxhYmxlXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlclxuICA6IElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZVxuICAgID8gUGF0aCBleHRlbmRzIGtleW9mIFRUYWJsZXNba2V5b2YgVFRhYmxlc11cbiAgICAgID8gVFRhYmxlc1trZXlvZiBUVGFibGVzXVtQYXRoXVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG5cbi8vIOy7rOufvCDqsr3roZzsl5DshJwg7YOA7J6F7J2EIOy2lOy2nO2VqeuLiOuLpC4gbGVmdEpvaW4g7Jes67aA7JmAIOq0gOqzhOyXhuydtCDsm5Drs7gg7YOA7J6F7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbi8vIOykkeyyqSDqsJ3ssrQg64K067aAIO2VhOuTnOyXkOyEnCDsgqzsmqnrkKnri4jri6QuICjqsJ3ssrQg66CI67Ko7JeQ7IScIOydtOuvuCB8IG51bGwg7LKY66as6rCAIOyZhOujjOuQmOyXiOycvOuvgOuhnClcbnR5cGUgRXh0cmFjdENvbHVtblR5cGVSYXc8XG4gIFRUYWJsZXMgZXh0ZW5kcyBvYmplY3QsXG4gIFBhdGggZXh0ZW5kcyBzdHJpbmcsXG4+ID0gUGF0aCBleHRlbmRzIGAke2luZmVyIFRBbGlhc30uJHtpbmZlciBUQ29sdW1ufWBcbiAgPyBUQWxpYXMgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgPyBUQ29sdW1uIGV4dGVuZHMga2V5b2YgVFRhYmxlc1tUQWxpYXNdXG4gICAgICA/IFRUYWJsZXNbVEFsaWFzXVtUQ29sdW1uXSAvLyBsZWZ0Sm9pbiDsl6zrtoDsmYAg6rSA6rOE7JeG7J20IOybkOuzuCDtg4DsnoVcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyXG4gIDogSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlXG4gICAgPyBQYXRoIGV4dGVuZHMga2V5b2YgVFRhYmxlc1trZXlvZiBUVGFibGVzXVxuICAgICAgPyBUVGFibGVzW2tleW9mIFRUYWJsZXNdW1BhdGhdXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlcjtcblxuLy8gV2hlcmUg7KGw6rG0IOqwneyytCDtg4DsnoVcbi8vIOyYiDogeyBcInUuaWRcIjogMSwgXCJ1LnN0YXR1c1wiOiBcImFjdGl2ZVwiIH1cbmV4cG9ydCB0eXBlIFdoZXJlQ29uZGl0aW9uPFRUYWJsZXMgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBba2V5IGluIEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5dPzogRXh0cmFjdENvbHVtblR5cGU8VFRhYmxlcywga2V5ICYgc3RyaW5nPjtcbn07XG5cbi8vIEZ1bGx0ZXh0IGluZGV4IOy7rOufvCDstpTstpwg7YOA7J6FXG5leHBvcnQgdHlwZSBGdWxsdGV4dENvbHVtbnM8VFRhYmxlcyBleHRlbmRzIG9iamVjdD4gPSB7XG4gIFtUQWxpYXMgaW4ga2V5b2YgVFRhYmxlc106IFRUYWJsZXNbVEFsaWFzXSBleHRlbmRzIHtcbiAgICBbSyBpbiBGdWxsdGV4dEtleV06IHJlYWRvbmx5IChpbmZlciBDb2wpW107XG4gIH1cbiAgICA/IENvbCBleHRlbmRzIHN0cmluZ1xuICAgICAgPyBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7Q29sfWBcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xufVtrZXlvZiBUVGFibGVzXTtcblxuLy8g67mE6rWQIOyXsOyCsOyekFxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbk9wZXJhdG9yID0gXCI9XCIgfCBcIj5cIiB8IFwiPj1cIiB8IFwiPFwiIHwgXCI8PVwiIHwgXCI8PlwiIHwgXCIhPVwiO1xuLy8g7KGw6rG0IOyXsOyCsOyekDog67mE6rWQIOyXsOyCsOyekCArIO2MqO2EtCDrp6Tsua0g7Jew7IKw7J6QXG5leHBvcnQgdHlwZSBXaGVyZU9wZXJhdG9yID0gQ29tcGFyaXNvbk9wZXJhdG9yIHwgXCJsaWtlXCIgfCBcIm5vdCBsaWtlXCIgfCBcImlsaWtlXCIgfCBcIm5vdCBpbGlrZVwiO1xuZXhwb3J0IGNvbnN0IEZVWlpZX09QRVJBVE9SUyA9IFtcIjwlXCIsIFwiJVwiLCBcIjw8JVwiXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEZ1enp5T3BlcmF0b3IgPSAodHlwZW9mIEZVWlpZX09QRVJBVE9SUylbbnVtYmVyXTtcblxuLy8gU1FMIEV4cHJlc3Npb24g7YOA7J6FIOygleydmFxuZXhwb3J0IHR5cGUgU3FsRXhwcmVzc2lvbjxUIGV4dGVuZHMgU3FsRXhwcmVzc2lvblR5cGUsIFROdWxsYWJsZSBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4gPSB7XG4gIF90eXBlOiBcInNxbF9leHByZXNzaW9uXCI7IC8vIOuYkOuKlCBcImNvbXB1dGVkX3ZhbHVlXCJcbiAgX3JldHVybjogVDtcbiAgX3NxbDogc3RyaW5nO1xuICBfcGFyYW1zOiBLbmV4LlJhd0JpbmRpbmdbXTtcbiAgcmVhZG9ubHkgX251bGxhYmxlPzogVE51bGxhYmxlO1xufTtcblxudHlwZSBQYXJzZVNxbEV4cHJlc3Npb248VEV4cHJlc3Npb24+ID1cbiAgVEV4cHJlc3Npb24gZXh0ZW5kcyBTcWxFeHByZXNzaW9uPGluZmVyIFRSZXR1cm4sIGluZmVyIFROdWxsYWJsZT5cbiAgICA/XG4gICAgICAgIHwgKFRSZXR1cm4gZXh0ZW5kcyBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IHN0cmluZ1xuICAgICAgICAgICAgOiBUUmV0dXJuIGV4dGVuZHMgXCJudW1iZXJcIlxuICAgICAgICAgICAgICA/IG51bWJlclxuICAgICAgICAgICAgICA6IFRSZXR1cm4gZXh0ZW5kcyBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICAgID8gYm9vbGVhblxuICAgICAgICAgICAgICAgIDogVFJldHVybiBleHRlbmRzIFwiZGF0ZVwiXG4gICAgICAgICAgICAgICAgICA/IERhdGVcbiAgICAgICAgICAgICAgICAgIDogVFJldHVybiBleHRlbmRzIFwic3RyaW5nW11cIlxuICAgICAgICAgICAgICAgICAgICA/IHN0cmluZ1tdXG4gICAgICAgICAgICAgICAgICAgIDogbmV2ZXIpXG4gICAgICAgIHwgKHRydWUgZXh0ZW5kcyBUTnVsbGFibGUgPyBudWxsIDogbmV2ZXIpXG4gICAgOiBuZXZlcjtcblxuLy8g6rKw6rO8IO2DgOyehSDqsIDrj4XshLHsnYQg7JyE7ZWcIO2DgOyehSDtmZXsnqVcbmV4cG9ydCB0eXBlIEV4cGFuZDxUPiA9IFQgZXh0ZW5kcyBhbnlbXVxuICA/IHsgW0sgaW4ga2V5b2YgVFswXV06IFRbMF1bS10gfVtdIC8vIOuwsOyXtOydtOuptCDssqsg67KI7Ke4IOyalOyGjOulvCBFeHBhbmTtlZjqs6Ag67Cw7Je066GcIOqwkOyMiFxuICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgICA/IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gfVxuICAgIDogVDtcblxudHlwZSBJc1NpbmdsZUtleTxUVGFibGVzIGV4dGVuZHMgb2JqZWN0PiA9IGtleW9mIFRUYWJsZXMgZXh0ZW5kcyBpbmZlciBLXG4gID8gSyBleHRlbmRzIGtleW9mIFRUYWJsZXNcbiAgICA/IGtleW9mIFRUYWJsZXMgZXh0ZW5kcyBLIC8vIOyXreuwqe2WpSDssrTtgazroZwg64uo7J28IO2CpCDtmZXsnbhcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZVxuICAgIDogZmFsc2VcbiAgOiBmYWxzZTtcblxuZXhwb3J0IHR5cGUgU2luZ2xlVGFibGVWYWx1ZTxUVGFibGVzIGV4dGVuZHMgb2JqZWN0PiA9XG4gIElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZSA/IFRUYWJsZXNba2V5b2YgVFRhYmxlc10gOiBuZXZlcjtcblxuLy8gX19oYXNEZWZhdWx0X1/sl5Ag7Y+s7ZWo65CcIO2CpOuTpOydhCBQdXJpVGFibGU8VD7snZgg7YKk66GcIOygnO2VnFxudHlwZSBIYXNEZWZhdWx0S2V5czxUPiA9IFQgZXh0ZW5kcyB7IF9faGFzRGVmYXVsdF9fOiByZWFkb25seSAoaW5mZXIgSylbXSB9XG4gID8gRXh0cmFjdDxLLCBrZXlvZiBQdXJpVGFibGU8VD4+XG4gIDogbmV2ZXI7XG5cbi8vIF9fZ2VuZXJhdGVkX1/sl5Ag7Y+s7ZWo65CcIO2CpOuTpCAoSU5TRVJUIOyLnCDsoJzsmbjtlbTslbwg7ZWoKVxudHlwZSBHZW5lcmF0ZWRLZXlzPFQ+ID0gVCBleHRlbmRzIHsgX19nZW5lcmF0ZWRfXzogcmVhZG9ubHkgKGluZmVyIEspW10gfVxuICA/IEV4dHJhY3Q8Sywga2V5b2YgUHVyaVRhYmxlPFQ+PlxuICA6IG5ldmVyO1xuXG4vLyBfX3ZpcnR1YWxfcXVlcnlfX+yXkCDtj6ztlajrkJwg7YKk65OkIChJTlNFUlQg7IucIOygnOyZuO2VtOyVvCDtlagpXG50eXBlIFZpcnR1YWxRdWVyeUtleXM8VD4gPSBUIGV4dGVuZHMgeyBfX3ZpcnR1YWxfcXVlcnlfXzogcmVhZG9ubHkgKGluZmVyIEspW10gfVxuICA/IEV4dHJhY3Q8Sywga2V5b2YgUHVyaVRhYmxlPFQ+PlxuICA6IG5ldmVyO1xuXG4vLyBJbnNlcnQg7YOA7J6FOiDrqZTtg4DrjbDsnbTthLAg7KCc6rGwIO2bhCwgX19oYXNEZWZhdWx0X18g7Lus65+865Ok66eMIG9wdGlvbmFs66GcIOyymOumrCwgZ2VuZXJhdGVkL3ZpcnR1YWxRdWVyeSDsu6zrn7zsnYAg7JmE7KCE7Z6IIOygnOyZuFxuZXhwb3J0IHR5cGUgSW5zZXJ0RGF0YTxUPiA9IE9taXQ8XG4gIFB1cmlUYWJsZTxUPixcbiAgSW50ZXJuYWxUeXBlS2V5cyB8IEhhc0RlZmF1bHRLZXlzPFQ+IHwgR2VuZXJhdGVkS2V5czxUPiB8IFZpcnR1YWxRdWVyeUtleXM8VD5cbj4gJiB7XG4gIFtLIGluIEhhc0RlZmF1bHRLZXlzPFQ+XT86IFB1cmlUYWJsZTxUPltLXTtcbn07XG5cbi8vIEluc2VydCBSZXN1bHQg7YOA7J6FXG5leHBvcnQgdHlwZSBJbnNlcnRSZXN1bHQgPSBQaWNrPFF1ZXJ5UmVzdWx0LCBcImNvbW1hbmRcIiB8IFwicm93Q291bnRcIiB8IFwicm93c1wiIHwgXCJvaWRcIj47XG5cbi8vIFN1YnNldFF1ZXJ566W8IOychO2VnCDtg4DsnoUg7Jyg7Yu466as7YuwXG5leHBvcnQgdHlwZSBFeHRyYWN0VFRhYmxlczxUIGV4dGVuZHMgUHVyaTxhbnksIGFueSwgYW55Pj4gPVxuICBUIGV4dGVuZHMgUHVyaTxhbnksIGluZmVyIFRUYWJsZXMsIGFueT4gPyBUVGFibGVzIDogbmV2ZXI7XG5leHBvcnQgdHlwZSBVbmlvbkV4dHJhY3RlZFRUYWJsZXM8XG4gIFN1YnNldEtleSBleHRlbmRzIHN0cmluZyxcbiAgU3Vic2V0UXVlcmllcyBleHRlbmRzIFJlY29yZDxTdWJzZXRLZXksIFB1cmlTdWJzZXRGbj4sXG4+ID0ge1xuICBbSyBpbiBTdWJzZXRLZXldOiBFeHRyYWN0VFRhYmxlczxSZXR1cm5UeXBlPFN1YnNldFF1ZXJpZXNbS10+Pjtcbn1bU3Vic2V0S2V5XTtcblxuLy8gT04gQ09ORkxJQ1Qg64yA7IOBIO2DgOyehVxuLy8gLSDri6jsnbwg7Lus65+8OiBcImVtYWlsXCJcbi8vIC0g67O17IiYIOy7rOufvDogW1widXNlcl9pZFwiLCBcInByb2R1Y3RfaWRcIl1cbmV4cG9ydCB0eXBlIE9uQ29uZmxpY3RUYXJnZXQgPSBzdHJpbmcgfCBzdHJpbmdbXTtcblxuLy8gT04gQ09ORkxJQ1Qg7JWh7IWYIO2DgOyehVxuLy8gLSBcIm5vdGhpbmdcIjogRE8gTk9USElOR1xuLy8gLSB7IHVwZGF0ZTogWy4uLl0gfTogRE8gVVBEQVRFXG5leHBvcnQgdHlwZSBPbkNvbmZsaWN0QWN0aW9uPFRUYWJsZXMgZXh0ZW5kcyBvYmplY3Q+ID1cbiAgfCBcIm5vdGhpbmdcIlxuICB8IHtcbiAgICAgIHVwZGF0ZTpcbiAgICAgICAgfCBBdmFpbGFibGVDb2x1bW5zPFRUYWJsZXM+W10gLy8g67Cw7Je0IO2Yle2DnCAtIFtcIm5hbWVcIiwgXCJlbWFpbFwiXVxuICAgICAgICB8IFdoZXJlQ29uZGl0aW9uPFRUYWJsZXM+OyAvLyDqsJ3ssrQg7ZiV7YOcIC0geyBuYW1lOiBcIkpvaG5cIiwgY291bnQ6IFB1cmkucmF3TnVtYmVyKC4uLikgfVxuICAgIH07XG5cbi8vIEZLIOy7rOufvOuqhSDstpTstpwg7Jyg7Yu466as7YuwIO2DgOyehSAtIERhdGFiYXNlRm9yZWlnbktleXMg7Zmc7JqpXG5leHBvcnQgdHlwZSBGb3JlaWduS2V5Q29sdW1uczxUVGFibGUgZXh0ZW5kcyBUYWJsZU5hbWU8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+PiA9XG4gIFRUYWJsZSBleHRlbmRzIGtleW9mIERhdGFiYXNlRm9yZWlnbktleXMgPyBEYXRhYmFzZUZvcmVpZ25LZXlzW1RUYWJsZV0gOiBuZXZlcjtcblxuLy8gVW5pb27snYQgSW50ZXJzZWN0aW9u7Jy866GcIOuzgO2ZmO2VmOuKlCDsnKDti7jrpqzti7BcbnR5cGUgVW5pb25Ub0ludGVyc2VjdGlvbjxVPiA9IChVIGV4dGVuZHMgYW55ID8gKGs6IFUpID0+IHZvaWQgOiBuZXZlcikgZXh0ZW5kcyAoazogaW5mZXIgSSkgPT4gdm9pZFxuICA/IElcbiAgOiBuZXZlcjtcblxuLy8gU2VsZWN0QWxsIOyLnCDrqqjrk6Ag7KGw7J2465CcIO2FjOydtOu4lOydmCDsu6zrn7wg7Y+s7ZWoXG5leHBvcnQgdHlwZSBTZWxlY3RBbGxSZXN1bHQ8VFRhYmxlcyBleHRlbmRzIG9iamVjdD4gPSBVbmlvblRvSW50ZXJzZWN0aW9uPFxuICB7XG4gICAgW0sgaW4ga2V5b2YgVFRhYmxlc106IFRUYWJsZXNbS10gZXh0ZW5kcyBpbmZlciBUXG4gICAgICA/IFQgZXh0ZW5kcyBMZWZ0Sm9pbmVkTWFya2VyXG4gICAgICAgID8gUGFydGlhbDxPbWl0SW50ZXJuYWxUeXBlS2V5czxUPj4gLy8gTEVGVCBKT0lO7J2AIG51bGxhYmxlLCDrqZTtg4DrjbDsnbTthLAg7KCc6rGwXG4gICAgICAgIDogT21pdEludGVybmFsVHlwZUtleXM8VD4gLy8gSU5ORVIgSk9JTuydgCBub24tbnVsbGFibGUsIOuplO2DgOuNsOydtO2EsCDsoJzqsbBcbiAgICAgIDogbmV2ZXI7XG4gIH1ba2V5b2YgVFRhYmxlc11cbj47XG5cbi8vIEZUUyDtg4DsnoVcbnR5cGUgVHNRdWVyeVBhcnNlciA9IFwidG9fdHNxdWVyeVwiIHwgXCJwbGFpbnRvX3RzcXVlcnlcIiB8IFwicGhyYXNldG9fdHNxdWVyeVwiIHwgXCJ3ZWJzZWFyY2hfdG9fdHNxdWVyeVwiO1xuZXhwb3J0IHR5cGUgVHNRdWVyeUNvbmZpZyA9IFwic2ltcGxlXCIgfCBcImVuZ2xpc2hcIjtcbmV4cG9ydCB0eXBlIFRzUXVlcnlPcHRpb25zID0ge1xuICBwYXJzZXI/OiBUc1F1ZXJ5UGFyc2VyO1xuICBjb25maWc/OiBUc1F1ZXJ5Q29uZmlnO1xufTtcblxuZXhwb3J0IHR5cGUgVHNIaWdobGlnaHRPcHRpb25zID0ge1xuICAvKiog7L+866asIOuzgO2ZmCDtlajsiJggKOq4sOuzuOqwkjogXCJ3ZWJzZWFyY2hfdG9fdHNxdWVyeVwiKSAqL1xuICBwYXJzZXI/OiBUc1F1ZXJ5UGFyc2VyO1xuICAvKiog7YWN7Iqk7Yq4IOqygOyDiSDshKTsoJUgKOq4sOuzuOqwkjogXCJzaW1wbGVcIikgKi9cbiAgY29uZmlnPzogVHNRdWVyeUNvbmZpZztcbiAgLyoqIOy1nOuMgCDri6jslrQg7IiYICjquLDrs7jqsJI6IDM1KSAqL1xuICBtYXhXb3Jkcz86IG51bWJlcjtcbiAgLyoqIOy1nOyGjCDri6jslrQg7IiYICjquLDrs7jqsJI6IDE1KSAqL1xuICBtaW5Xb3Jkcz86IG51bWJlcjtcbiAgLyoqIO2XpOuTnOudvOyduCDsi5zsnpEv64Gd7JeQ7IScIOygnOqxsO2VoCDsp6fsnYAg64uo7Ja0IOq4uOydtCAo6riw67O46rCSOiAzKSAqL1xuICBzaG9ydFdvcmQ/OiBudW1iZXI7XG4gIC8qKiB0cnVl66m0IOyghOyytCDrrLjshJzrpbwg7Zek65Oc65287J247Jy866GcIOyCrOyaqSAo6riw67O46rCSOiBmYWxzZSkgKi9cbiAgaGlnaGxpZ2h0QWxsPzogYm9vbGVhbjtcbiAgLyoqIO2RnOyLnO2VoCDstZzrjIAg7YWN7Iqk7Yq4IOyhsOqwgSDsiJggKOq4sOuzuOqwkjogMCwg7KGw6rCBIOuvuOyCrOyaqSkgKi9cbiAgbWF4RnJhZ21lbnRzPzogbnVtYmVyO1xuICAvKiog7L+866asIOuLqOyWtCDsi5zsnpEg6rWs67aE7J6QICjquLDrs7jqsJI6IFwiPGI+XCIpICovXG4gIHN0YXJ0U2VsPzogc3RyaW5nO1xuICAvKiog7L+866asIOuLqOyWtCDrgZ0g6rWs67aE7J6QICjquLDrs7jqsJI6IFwiPC9iPlwiKSAqL1xuICBzdG9wU2VsPzogc3RyaW5nO1xuICAvKiog7KGw6rCBIOq1rOu2hOyekCAo6riw67O46rCSOiBcIiAuLi4gXCIpICovXG4gIGZyYWdtZW50RGVsaW1pdGVyPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVHNSYW5rT3B0aW9ucyA9IHtcbiAgcGFyc2VyPzogVHNRdWVyeVBhcnNlcjtcbiAgY29uZmlnPzogVHNRdWVyeUNvbmZpZztcbiAgLyoqIOqwgOykkey5mCDrsLDsl7QgW0QsIEMsIEIsIEFdICjquLDrs7jqsJI6IFswLjEsIDAuMiwgMC40LCAxLjBdKSAqL1xuICB3ZWlnaHRzPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIC8qKlxuICAgKiDsoJXqt5ztmZQg7Ji17IWYXG4gICAqIDA6IOusuOyEnCDquLjsnbQg66y07IucICjquLDrs7jqsJIpXG4gICAqIDE6IDEgKyBsb2co66y47IScIOq4uOydtCnroZwg64KY64iUXG4gICAqIDI6IOusuOyEnCDquLjsnbTroZwg64KY64iUXG4gICAqIDQ6IO2Pieq3oCDsobDtmZQg6rGw66as66GcIOuCmOuIlCAodHNfcmFua19jZOunjClcbiAgICogODog6rOg7JygIOuLqOyWtCDsiJjroZwg64KY64iUXG4gICAqIDE2OiAxICsgbG9nKOqzoOycoCDri6jslrQg7IiYKeuhnCDrgpjriJRcbiAgICogMzI6IHJhbmsvKHJhbmsrMSkgLT4gMH4xIOyCrOydtOydmCDqsJLsnLzroZwg7Iqk7LyA7J2866eBXG4gICAqXG4gICAqIOu5hO2KuOuniOyKpO2BrOulvCDsgqzsmqntlZjsl6wg7Ji17IWY7J2EIOyhsO2Vqe2VoCDsiJgg7J6I7J2MXG4gICAqIOyYiDogOCB8IDMyIC0+IOqzoOycoCDri6jslrQg7IiY66GcIOuCmOuIhOqzoCAwfjEg7Iqk7LyA7J2866eBXG4gICAqL1xuICBub3JtYWxpemF0aW9uPzogbnVtYmVyO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztDQXVUYSxrQkFBa0I7RUFBQztFQUFNO0VBQUs7Q0FBSyJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type MultipartFile } from "@fastify/multipart";
|
|
2
2
|
import { BaseFile } from "./base-file";
|
|
3
|
-
import { type
|
|
3
|
+
import { type DiskName } from "./types";
|
|
4
4
|
/**
|
|
5
5
|
* Buffer 모드로 업로드된 파일
|
|
6
6
|
* 메모리에 로드된 상태로, md5 계산이나 이미지 처리 등 유연한 작업이 가능합니다.
|
|
@@ -15,11 +15,11 @@ export declare class BufferedFile extends BaseFile {
|
|
|
15
15
|
md5(): Promise<string>;
|
|
16
16
|
/**
|
|
17
17
|
* 파일을 디스크에 저장
|
|
18
|
-
* @param diskName 디스크 이름
|
|
18
|
+
* @param diskName 설정에 등록한 디스크 이름
|
|
19
19
|
* @param key 저장 경로 (예: 'uploads/avatar.png')
|
|
20
20
|
* @returns 저장된 파일의 URL
|
|
21
21
|
*/
|
|
22
|
-
saveToDisk(diskName:
|
|
22
|
+
saveToDisk(diskName: DiskName, key: string): Promise<string>;
|
|
23
23
|
/** 원본 MultipartFile 접근 */
|
|
24
24
|
get raw(): MultipartFile;
|
|
25
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffered-file.d.ts","sourceRoot":"","sources":["../../src/storage/buffered-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"buffered-file.d.ts","sourceRoot":"","sources":["../../src/storage/buffered-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAS;IAE5B,YAAY,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAQ9C;IAED,gBAAgB;IAChB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,gBAAgB;IACV,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAE3B;IAED;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcjE;IAED,0BAA0B;IAC1B,IAAI,GAAG,IAAI,aAAa,CAEvB;CACF"}
|
|
@@ -27,7 +27,7 @@ var init_buffered_file = __esmMin((() => {
|
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* 파일을 디스크에 저장
|
|
30
|
-
* @param diskName 디스크 이름
|
|
30
|
+
* @param diskName 설정에 등록한 디스크 이름
|
|
31
31
|
* @param key 저장 경로 (예: 'uploads/avatar.png')
|
|
32
32
|
* @returns 저장된 파일의 URL
|
|
33
33
|
*/
|
|
@@ -48,4 +48,4 @@ var init_buffered_file = __esmMin((() => {
|
|
|
48
48
|
init_buffered_file();
|
|
49
49
|
export { BufferedFile, init_buffered_file };
|
|
50
50
|
|
|
51
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9idWZmZXJlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgTXVsdGlwYXJ0RmlsZSB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcblxuaW1wb3J0IHsgQmFzZUZpbGUgfSBmcm9tIFwiLi9iYXNlLWZpbGVcIjtcbmltcG9ydCB7IHR5cGUgRGlza05hbWUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEJ1ZmZlciDrqqjrk5zroZwg7JeF66Gc65Oc65CcIO2MjOydvFxuICog66mU66qo66as7JeQIOuhnOuTnOuQnCDsg4Htg5zroZwsIG1kNSDqs4TsgrDsnbTrgpgg7J2066+47KeAIOyymOumrCDrk7Eg7Jyg7Jew7ZWcIOyekeyXheydtCDqsIDriqXtlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWZmZXJlZEZpbGUgZXh0ZW5kcyBCYXNlRmlsZSB7XG4gIHByaXZhdGUgZmlsZVZhbHVlOiBNdWx0aXBhcnRGaWxlO1xuICBwcml2YXRlIGJ1ZmZlclZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IoZmlsZTogTXVsdGlwYXJ0RmlsZSwgYnVmZmVyOiBCdWZmZXIpIHtcbiAgICBzdXBlcih7XG4gICAgICBmaWxlbmFtZTogZmlsZS5maWxlbmFtZSxcbiAgICAgIG1pbWV0eXBlOiBmaWxlLm1pbWV0eXBlLFxuICAgICAgc2l6ZTogYnVmZmVyLmxlbmd0aCxcbiAgICB9KTtcbiAgICB0aGlzLmZpbGVWYWx1ZSA9IGZpbGU7XG4gICAgdGhpcy5idWZmZXJWYWx1ZSA9IGJ1ZmZlcjtcbiAgfVxuXG4gIC8qKiDtjIzsnbwgQnVmZmVyICovXG4gIGdldCBidWZmZXIoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXJWYWx1ZTtcbiAgfVxuXG4gIC8qKiBNRDUg7ZW07IucIOqzhOyCsCAqL1xuICBhc3luYyBtZDUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY3JlYXRlSGFzaChcIm1kNVwiKS51cGRhdGUodGhpcy5idWZmZXJWYWx1ZSkuZGlnZXN0KFwiaGV4XCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIO2MjOydvOydhCDrlJTsiqTtgazsl5Ag7KCA7J6lXG4gICAqIEBwYXJhbSBkaXNrTmFtZSDshKTsoJXsl5Ag65Ox66Gd7ZWcIOuUlOyKpO2BrCDsnbTrpoRcbiAgICogQHBhcmFtIGtleSDsoIDsnqUg6rK966GcICjsmIg6ICd1cGxvYWRzL2F2YXRhci5wbmcnKVxuICAgKiBAcmV0dXJucyDsoIDsnqXrkJwg7YyM7J287J2YIFVSTFxuICAgKi9cbiAgYXN5bmMgc2F2ZVRvRGlzayhkaXNrTmFtZTogRGlza05hbWUsIGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyDsiJztmZgg7J2Y7KG07ISxIOuwqeyngOulvCDsnITtlbQg64+Z7KCBIGltcG9ydFxuICAgIGNvbnN0IHsgU29uYW11IH0gPSBhd2FpdCBpbXBvcnQoXCIuLi9hcGkvc29uYW11XCIpO1xuICAgIGNvbnN0IGRpc2sgPSBTb25hbXUuc3RvcmFnZS51c2UoZGlza05hbWUpO1xuXG4gICAgYXdhaXQgZGlzay5wdXQoa2V5LCBuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlclZhbHVlKSwge1xuICAgICAgY29udGVudFR5cGU6IHRoaXMubWltZXR5cGUsXG4gICAgfSk7XG5cbiAgICB0aGlzW1wiX3VybFwiXSA9IGF3YWl0IGRpc2suZ2V0VXJsKGtleSk7XG4gICAgdGhpc1tcIl9zaWduZWRVcmxcIl0gPSBhd2FpdCBkaXNrLmdldFNpZ25lZFVybChrZXkpO1xuXG4gICAgLy8gc2lnbmVkIHVybOydgCDrp4zro4wg7Iuc6rCE7J20IOyeiOq4sCDrlYzrrLjsl5AsIHVuc2lnbmVkIHVybOydhCDrsJjtmZjtlanri4jri6QuXG4gICAgcmV0dXJuIHRoaXNbXCJfdXJsXCJdO1xuICB9XG5cbiAgLyoqIOybkOuzuCBNdWx0aXBhcnRGaWxlIOygkeq3vCAqL1xuICBnZXQgcmF3KCk6IE11bHRpcGFydEZpbGUge1xuICAgIHJldHVybiB0aGlzLmZpbGVWYWx1ZTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Q0FJc0MsZUFBQTtDQU96QixlQUFiLGNBQWtDLFNBQVM7RUFDekM7RUFDQTtFQUVBLFlBQVksTUFBcUIsUUFBZ0I7R0FDL0MsTUFBTTtJQUNKLFVBQVUsS0FBSztJQUNmLFVBQVUsS0FBSztJQUNmLE1BQU0sT0FBTztHQUNmLENBQUM7R0FDRCxLQUFLLFlBQVk7R0FDakIsS0FBSyxjQUFjO0VBQ3JCOztFQUdBLElBQUksU0FBaUI7R0FDbkIsT0FBTyxLQUFLO0VBQ2Q7O0VBR0EsTUFBTSxNQUF1QjtHQUMzQixPQUFPLFdBQVcsS0FBSyxDQUFDLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLE9BQU8sS0FBSztFQUNoRTs7Ozs7OztFQVFBLE1BQU0sV0FBVyxVQUFvQixLQUE4QjtHQUVqRSxNQUFNLEVBQUUsV0FBVyxNQUFNLE9BQU87R0FDaEMsTUFBTSxPQUFPLE9BQU8sUUFBUSxJQUFJLFFBQVE7R0FFeEMsTUFBTSxLQUFLLElBQUksS0FBSyxJQUFJLFdBQVcsS0FBSyxXQUFXLEdBQUcsRUFDcEQsYUFBYSxLQUFLLFNBQ3BCLENBQUM7R0FFRCxLQUFLLFVBQVUsTUFBTSxLQUFLLE9BQU8sR0FBRztHQUNwQyxLQUFLLGdCQUFnQixNQUFNLEtBQUssYUFBYSxHQUFHO0dBR2hELE9BQU8sS0FBSztFQUNkOztFQUdBLElBQUksTUFBcUI7R0FDdkIsT0FBTyxLQUFLO0VBQ2Q7Q0FDRiJ9
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ export { BaseFile } from "./base-file";
|
|
|
2
2
|
export { BufferedFile } from "./buffered-file";
|
|
3
3
|
export { type DriverKey, drivers } from "./drivers";
|
|
4
4
|
export { StorageManager } from "./storage-manager";
|
|
5
|
-
export type { KeyGenerator, StorageConfig } from "./types";
|
|
5
|
+
export type { DiskName, KeyGenerator, StorageConfig } from "./types";
|
|
6
6
|
export { UploadedFile as StreamedFile } from "./uploaded-file";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/storage/index.js
CHANGED
|
@@ -10,4 +10,4 @@ init_storage_manager();
|
|
|
10
10
|
init_uploaded_file();
|
|
11
11
|
export { BaseFile, BufferedFile, StorageManager, UploadedFile as StreamedFile, drivers };
|
|
12
12
|
|
|
13
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JhZ2UvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RvcmFnZSDshJzruIzrqqjrk4ggZXhwb3J0c1xuZXhwb3J0IHsgQmFzZUZpbGUgfSBmcm9tIFwiLi9iYXNlLWZpbGVcIjtcbmV4cG9ydCB7IEJ1ZmZlcmVkRmlsZSB9IGZyb20gXCIuL2J1ZmZlcmVkLWZpbGVcIjtcbmV4cG9ydCB7IHR5cGUgRHJpdmVyS2V5LCBkcml2ZXJzIH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuZXhwb3J0IHsgU3RvcmFnZU1hbmFnZXIgfSBmcm9tIFwiLi9zdG9yYWdlLW1hbmFnZXJcIjtcbmV4cG9ydCB0eXBlIHsgRGlza05hbWUsIEtleUdlbmVyYXRvciwgU3RvcmFnZUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgeyBVcGxvYWRlZEZpbGUgYXMgU3RyZWFtZWRGaWxlIH0gZnJvbSBcIi4vdXBsb2FkZWQtZmlsZVwiO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDc0MsZUFBQTtBQUNRLG1CQUFBO0FBRUkscUJBQUE7QUFFWSxtQkFBQSJ9
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Disk } from "flydrive";
|
|
2
|
-
import { type
|
|
3
|
-
import { type StorageConfig } from "./types";
|
|
2
|
+
import { type DiskName, type StorageConfig } from "./types";
|
|
4
3
|
/**
|
|
5
4
|
* 여러 디스크를 관리하는 매니저
|
|
6
5
|
*/
|
|
@@ -10,8 +9,8 @@ export declare class StorageManager {
|
|
|
10
9
|
constructor(config: StorageConfig);
|
|
11
10
|
/**
|
|
12
11
|
* 디스크 인스턴스 반환 (lazy initialization)
|
|
13
|
-
* @param diskName 디스크 이름
|
|
12
|
+
* @param diskName 설정에 등록한 디스크 이름
|
|
14
13
|
*/
|
|
15
|
-
use(diskName:
|
|
14
|
+
use(diskName: DiskName): Disk;
|
|
16
15
|
}
|
|
17
16
|
//# sourceMappingURL=storage-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../src/storage/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhC,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../src/storage/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhC,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAE5D;;GAEG;AACH,qBAAa,cAAc;IAGb,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,KAAK,CAAkC;IAE/C,YAAoB,MAAM,EAAE,aAAa,EAAI;IAE7C;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAW5B;CACF"}
|
|
@@ -13,7 +13,7 @@ var init_storage_manager = __esmMin((() => {
|
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* 디스크 인스턴스 반환 (lazy initialization)
|
|
16
|
-
* @param diskName 디스크 이름
|
|
16
|
+
* @param diskName 설정에 등록한 디스크 이름
|
|
17
17
|
*/
|
|
18
18
|
use(diskName) {
|
|
19
19
|
if (!this.disks.has(diskName)) {
|
|
@@ -31,4 +31,4 @@ var init_storage_manager = __esmMin((() => {
|
|
|
31
31
|
init_storage_manager();
|
|
32
32
|
export { StorageManager, init_storage_manager };
|
|
33
33
|
|
|
34
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1tYW5hZ2VyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3N0b3JhZ2UtbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXNrIH0gZnJvbSBcImZseWRyaXZlXCI7XG5cbmltcG9ydCB7IGFzc2VydERlZmluZWQgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcbmltcG9ydCB7IHR5cGUgRGlza05hbWUsIHR5cGUgU3RvcmFnZUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICog7Jes65+sIOuUlOyKpO2BrOulvCDqtIDrpqztlZjripQg66ek64uI7KCAXG4gKi9cbmV4cG9ydCBjbGFzcyBTdG9yYWdlTWFuYWdlciB7XG4gIHByaXZhdGUgZGlza3M6IE1hcDxEaXNrTmFtZSwgRGlzaz4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IFN0b3JhZ2VDb25maWcpIHt9XG5cbiAgLyoqXG4gICAqIOuUlOyKpO2BrCDsnbjsiqTthLTsiqQg67CY7ZmYIChsYXp5IGluaXRpYWxpemF0aW9uKVxuICAgKiBAcGFyYW0gZGlza05hbWUg7ISk7KCV7JeQIOuTseuhne2VnCDrlJTsiqTtgawg7J2066aEXG4gICAqL1xuICB1c2UoZGlza05hbWU6IERpc2tOYW1lKTogRGlzayB7XG4gICAgaWYgKCF0aGlzLmRpc2tzLmhhcyhkaXNrTmFtZSkpIHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNvbmZpZy5kcml2ZXJzW2Rpc2tOYW1lXTtcbiAgICAgIGlmICghZmFjdG9yeSkge1xuICAgICAgICBjb25zdCBhdmFpbGFibGUgPSBPYmplY3Qua2V5cyh0aGlzLmNvbmZpZy5kcml2ZXJzKS5qb2luKFwiLCBcIik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBkaXNrOiBcIiR7ZGlza05hbWV9XCIuIEF2YWlsYWJsZTogJHthdmFpbGFibGV9YCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRpc2tzLnNldChkaXNrTmFtZSwgbmV3IERpc2soZmFjdG9yeSgpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzc2VydERlZmluZWQodGhpcy5kaXNrcy5nZXQoZGlza05hbWUpLCBgRGlzayAke2Rpc2tOYW1lfSBub3QgZm91bmRgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Q0FFOEMsV0FBQTtDQU1qQyxpQkFBYixNQUE0QjtFQUdOO0VBRnBCLHdCQUFxQyxJQUFJLElBQUk7RUFFN0MsWUFBWSxRQUErQjtHQUF2QixLQUFBLFNBQUE7RUFBd0I7Ozs7O0VBTTVDLElBQUksVUFBMEI7R0FDNUIsSUFBSSxDQUFDLEtBQUssTUFBTSxJQUFJLFFBQVEsR0FBRztJQUM3QixNQUFNLFVBQVUsS0FBSyxPQUFPLFFBQVE7SUFDcEMsSUFBSSxDQUFDLFNBQVM7S0FDWixNQUFNLFlBQVksT0FBTyxLQUFLLEtBQUssT0FBTyxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUk7S0FDNUQsTUFBTSxJQUFJLE1BQU0sa0JBQWtCLFNBQVMsZ0JBQWdCLFdBQVc7SUFDeEU7SUFDQSxLQUFLLE1BQU0sSUFBSSxVQUFVLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztHQUM5QztHQUVBLE9BQU8sY0FBYyxLQUFLLE1BQU0sSUFBSSxRQUFRLEdBQUcsUUFBUSxTQUFTLFdBQVc7RUFDN0U7Q0FDRiJ9
|
package/dist/storage/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type DriverContract } from "flydrive/types";
|
|
2
|
-
|
|
2
|
+
/** storage.drivers에 등록한 디스크 이름. 드라이버 종류(fs·s3)와는 독립적이다. */
|
|
3
|
+
export type DiskName = string;
|
|
3
4
|
/**
|
|
4
5
|
* Stream 모드에서 파일 키 생성 함수 타입
|
|
5
6
|
*/
|
|
@@ -12,7 +13,7 @@ export type KeyGenerator = (file: {
|
|
|
12
13
|
*/
|
|
13
14
|
export type StorageConfig = {
|
|
14
15
|
/** 디스크별 드라이버 팩토리 */
|
|
15
|
-
drivers: Record<
|
|
16
|
+
drivers: Record<DiskName, () => DriverContract>;
|
|
16
17
|
/** stream 모드의 전역 키 생성 함수 (생략 시 timestamp-random 기본값) */
|
|
17
18
|
keyGenerator?: KeyGenerator;
|
|
18
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,2DAA2D;AAC3D,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE/B;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,cAAc,CAAC,CAAC;IAChD,wDAAwD;IACxD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseFile } from "./base-file";
|
|
2
|
-
import { type
|
|
2
|
+
import { type DiskName } from "./types";
|
|
3
3
|
/**
|
|
4
4
|
* Stream 모드로 업로드된 파일
|
|
5
5
|
* 이미 저장소에 스트리밍 완료된 상태로, url/key 등 메타데이터만 접근 가능합니다.
|
|
@@ -14,12 +14,12 @@ export declare class UploadedFile extends BaseFile {
|
|
|
14
14
|
url: string;
|
|
15
15
|
signedUrl: string;
|
|
16
16
|
key: string;
|
|
17
|
-
diskName:
|
|
17
|
+
diskName: DiskName;
|
|
18
18
|
});
|
|
19
19
|
/** 저장소 내 키 */
|
|
20
20
|
get key(): string;
|
|
21
21
|
/** 저장된 디스크 이름 */
|
|
22
|
-
get diskName():
|
|
22
|
+
get diskName(): DiskName;
|
|
23
23
|
/**
|
|
24
24
|
* 저장소에서 파일을 다운로드합니다.
|
|
25
25
|
* 스트림 모드로 업로드된 파일을 나중에 처리해야 할 때 사용합니다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploaded-file.d.ts","sourceRoot":"","sources":["../../src/storage/uploaded-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"uploaded-file.d.ts","sourceRoot":"","sources":["../../src/storage/uploaded-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAW;IAEhC,YAAY,MAAM,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,QAAQ,CAAC;KACpB,EAUA;IAED,cAAc;IACd,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,iBAAiB;IACjB,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAMhC;CACF"}
|
|
@@ -40,4 +40,4 @@ var init_uploaded_file = __esmMin((() => {
|
|
|
40
40
|
init_uploaded_file();
|
|
41
41
|
export { UploadedFile, init_uploaded_file };
|
|
42
42
|
|
|
43
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS91cGxvYWRlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VGaWxlIH0gZnJvbSBcIi4vYmFzZS1maWxlXCI7XG5pbXBvcnQgeyB0eXBlIERpc2tOYW1lIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBTdHJlYW0g66qo65Oc66GcIOyXheuhnOuTnOuQnCDtjIzsnbxcbiAqIOydtOuvuCDsoIDsnqXshozsl5Ag7Iqk7Yq466as67CNIOyZhOujjOuQnCDsg4Htg5zroZwsIHVybC9rZXkg65OxIOuplO2DgOuNsOydtO2EsOunjCDsoJHqt7wg6rCA64ql7ZWp64uI64ukLlxuICovXG5leHBvcnQgY2xhc3MgVXBsb2FkZWRGaWxlIGV4dGVuZHMgQmFzZUZpbGUge1xuICBwcml2YXRlIGtleVZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgZGlza05hbWVWYWx1ZTogRGlza05hbWU7XG5cbiAgY29uc3RydWN0b3IocGFyYW1zOiB7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbiAgICBtaW1ldHlwZTogc3RyaW5nO1xuICAgIHNpemU6IG51bWJlcjtcbiAgICB1cmw6IHN0cmluZztcbiAgICBzaWduZWRVcmw6IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbiAgICBkaXNrTmFtZTogRGlza05hbWU7XG4gIH0pIHtcbiAgICBzdXBlcih7XG4gICAgICBmaWxlbmFtZTogcGFyYW1zLmZpbGVuYW1lLFxuICAgICAgbWltZXR5cGU6IHBhcmFtcy5taW1ldHlwZSxcbiAgICAgIHNpemU6IHBhcmFtcy5zaXplLFxuICAgICAgdXJsOiBwYXJhbXMudXJsLFxuICAgICAgc2lnbmVkVXJsOiBwYXJhbXMuc2lnbmVkVXJsLFxuICAgIH0pO1xuICAgIHRoaXMua2V5VmFsdWUgPSBwYXJhbXMua2V5O1xuICAgIHRoaXMuZGlza05hbWVWYWx1ZSA9IHBhcmFtcy5kaXNrTmFtZTtcbiAgfVxuXG4gIC8qKiDsoIDsnqXshowg64K0IO2CpCAqL1xuICBnZXQga2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMua2V5VmFsdWU7XG4gIH1cblxuICAvKiog7KCA7J6l65CcIOuUlOyKpO2BrCDsnbTrpoQgKi9cbiAgZ2V0IGRpc2tOYW1lKCk6IERpc2tOYW1lIHtcbiAgICByZXR1cm4gdGhpcy5kaXNrTmFtZVZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIOyggOyepeyGjOyXkOyEnCDtjIzsnbzsnYQg64uk7Jq066Gc65Oc7ZWp64uI64ukLlxuICAgKiDsiqTtirjrprwg66qo65Oc66GcIOyXheuhnOuTnOuQnCDtjIzsnbzsnYQg64KY7KSR7JeQIOyymOumrO2VtOyVvCDtlaAg65WMIOyCrOyaqe2VqeuLiOuLpC5cbiAgICovXG4gIGFzeW5jIGRvd25sb2FkKCk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgY29uc3QgeyBTb25hbXUgfSA9IGF3YWl0IGltcG9ydChcIi4uL2FwaS9zb25hbXVcIik7XG4gICAgY29uc3QgZGlzayA9IFNvbmFtdS5zdG9yYWdlLnVzZSh0aGlzLmRpc2tOYW1lVmFsdWUpO1xuXG4gICAgY29uc3QgdWludDhBcnJheSA9IGF3YWl0IGRpc2suZ2V0KHRoaXMua2V5VmFsdWUpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh1aW50OEFycmF5KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztDQUFzQyxlQUFBO0NBT3pCLGVBQWIsY0FBa0MsU0FBUztFQUN6QztFQUNBO0VBRUEsWUFBWSxRQVFUO0dBQ0QsTUFBTTtJQUNKLFVBQVUsT0FBTztJQUNqQixVQUFVLE9BQU87SUFDakIsTUFBTSxPQUFPO0lBQ2IsS0FBSyxPQUFPO0lBQ1osV0FBVyxPQUFPO0dBQ3BCLENBQUM7R0FDRCxLQUFLLFdBQVcsT0FBTztHQUN2QixLQUFLLGdCQUFnQixPQUFPO0VBQzlCOztFQUdBLElBQUksTUFBYztHQUNoQixPQUFPLEtBQUs7RUFDZDs7RUFHQSxJQUFJLFdBQXFCO0dBQ3ZCLE9BQU8sS0FBSztFQUNkOzs7OztFQU1BLE1BQU0sV0FBNEI7R0FDaEMsTUFBTSxFQUFFLFdBQVcsTUFBTSxPQUFPO0dBR2hDLE1BQU0sYUFBYSxNQUZOLE9BQU8sUUFBUSxJQUFJLEtBQUssYUFFWixDQUFBLENBQUssSUFBSSxLQUFLLFFBQVE7R0FDL0MsT0FBTyxPQUFPLEtBQUssVUFBVTtFQUMvQjtDQUNGIn0=
|
package/package.json
CHANGED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { tmpdir } from "node:os";
|
|
2
|
+
|
|
3
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
4
|
+
|
|
5
|
+
import { DB } from "../../database/db";
|
|
6
|
+
import { EntityManager } from "../../entity/entity-manager";
|
|
7
|
+
import * as envModule from "../../env";
|
|
8
|
+
import { drivers } from "../../storage/drivers";
|
|
9
|
+
import { Syncer } from "../../syncer/syncer";
|
|
10
|
+
import { TemplateManager } from "../../template";
|
|
11
|
+
import { type AbsolutePath } from "../../utils/path-utils";
|
|
12
|
+
import * as utils from "../../utils/utils";
|
|
13
|
+
import * as configModule from "../config";
|
|
14
|
+
import { type SonamuConfig } from "../config";
|
|
15
|
+
import { Sonamu } from "../sonamu";
|
|
16
|
+
|
|
17
|
+
// 스토리지 자체는 실제 FS 드라이버로 검증하고 DB·모델 자동 로딩만 격리한다.
|
|
18
|
+
describe("서버 없이 스토리지 초기화", () => {
|
|
19
|
+
const snapshot = Sonamu.captureTestingSnapshot();
|
|
20
|
+
const originalInitialized = Sonamu.isInitialized;
|
|
21
|
+
const originalForTesting = Sonamu.forTesting;
|
|
22
|
+
const originalServer = Sonamu.server;
|
|
23
|
+
const originalStorage = Sonamu["storageValue"];
|
|
24
|
+
const originalCache = Sonamu["cacheValue"];
|
|
25
|
+
const originalWorkflows = Sonamu["workflowsValue"];
|
|
26
|
+
const originalDbConfig = Sonamu["dbConfigValue"];
|
|
27
|
+
const originalBoot = Sonamu["boot"];
|
|
28
|
+
const originalInitializeWorkflows = Sonamu["initializeWorkflows"];
|
|
29
|
+
|
|
30
|
+
let config: SonamuConfig;
|
|
31
|
+
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
vi.stubEnv("NODE_ENV", "test");
|
|
34
|
+
Sonamu.isInitialized = false;
|
|
35
|
+
Reflect.set(Sonamu, "storageValue", null);
|
|
36
|
+
config = {
|
|
37
|
+
projectName: "storage-test",
|
|
38
|
+
api: { dir: "api", route: { prefix: "/api" } },
|
|
39
|
+
database: {},
|
|
40
|
+
i18n: { defaultLocale: "ko", supportedLocales: ["ko"] },
|
|
41
|
+
sync: { targets: [] },
|
|
42
|
+
logging: false,
|
|
43
|
+
server: {
|
|
44
|
+
apiConfig: {
|
|
45
|
+
contextProvider: (context) => context,
|
|
46
|
+
guardHandler: () => {},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
vi.spyOn(configModule, "loadConfig").mockImplementation(async () => config);
|
|
51
|
+
vi.spyOn(envModule, "readAllEnvironmentSnapshots").mockReturnValue({
|
|
52
|
+
development: {},
|
|
53
|
+
test: {},
|
|
54
|
+
staging: {},
|
|
55
|
+
production: {},
|
|
56
|
+
});
|
|
57
|
+
vi.spyOn(DB, "setConfig").mockImplementation(() => {});
|
|
58
|
+
vi.spyOn(EntityManager, "autoload").mockResolvedValue(undefined);
|
|
59
|
+
vi.spyOn(Syncer.prototype, "autoloadTypes").mockResolvedValue(undefined);
|
|
60
|
+
vi.spyOn(Syncer.prototype, "autoloadModels").mockResolvedValue(undefined);
|
|
61
|
+
vi.spyOn(Syncer.prototype, "autoloadApis").mockResolvedValue(undefined);
|
|
62
|
+
vi.spyOn(Syncer.prototype, "autoloadWorkflows").mockResolvedValue(undefined);
|
|
63
|
+
vi.spyOn(Syncer.prototype, "autoloadSsrRoutes").mockResolvedValue(undefined);
|
|
64
|
+
vi.spyOn(TemplateManager, "autoload").mockResolvedValue(undefined);
|
|
65
|
+
// 워크플로 초기화는 별도 DB 연결을 만들므로 스토리지 수명주기 검사에서 제외한다.
|
|
66
|
+
Sonamu["initializeWorkflows"] = async () => {};
|
|
67
|
+
// SAFETY: 테스트에서만 쓰는 절대 경로이며 파일 접근은 위의 설정·자동 로딩 경계에서 격리한다.
|
|
68
|
+
vi.spyOn(utils, "findApiRootPath").mockReturnValue(
|
|
69
|
+
"/tmp/sonamu-storage-test/api" as AbsolutePath,
|
|
70
|
+
);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
afterEach(async () => {
|
|
74
|
+
if (Sonamu.server && Sonamu.server !== originalServer) await Sonamu.server.close();
|
|
75
|
+
Sonamu.restoreTestingSnapshot(snapshot);
|
|
76
|
+
Sonamu.isInitialized = originalInitialized;
|
|
77
|
+
Sonamu.forTesting = originalForTesting;
|
|
78
|
+
Sonamu.server = originalServer;
|
|
79
|
+
Reflect.set(Sonamu, "storageValue", originalStorage);
|
|
80
|
+
Reflect.set(Sonamu, "cacheValue", originalCache);
|
|
81
|
+
Reflect.set(Sonamu, "workflowsValue", originalWorkflows);
|
|
82
|
+
Reflect.set(Sonamu, "dbConfigValue", originalDbConfig);
|
|
83
|
+
Sonamu["boot"] = originalBoot;
|
|
84
|
+
Sonamu["initializeWorkflows"] = originalInitializeWorkflows;
|
|
85
|
+
vi.restoreAllMocks();
|
|
86
|
+
vi.unstubAllEnvs();
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
function configureStorage() {
|
|
90
|
+
const factory = vi.fn(
|
|
91
|
+
drivers.fs({
|
|
92
|
+
location: tmpdir(),
|
|
93
|
+
visibility: "public",
|
|
94
|
+
urlBuilder: {
|
|
95
|
+
async generateURL(key) {
|
|
96
|
+
return `https://cdn.example.com/${key}`;
|
|
97
|
+
},
|
|
98
|
+
async generateSignedURL(key) {
|
|
99
|
+
return `https://cdn.example.com/${key}?signed`;
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
}),
|
|
103
|
+
);
|
|
104
|
+
config.server.storage = { drivers: { images: factory } };
|
|
105
|
+
return factory;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
it.each(["init", "initForTesting"] as const)(
|
|
109
|
+
"%s에서 디스크 생성 없이 설정을 준비하고 URL을 만든다",
|
|
110
|
+
async (method) => {
|
|
111
|
+
const factory = configureStorage();
|
|
112
|
+
if (method === "init") await Sonamu.init(true, false);
|
|
113
|
+
else await Sonamu.initForTesting();
|
|
114
|
+
|
|
115
|
+
const storage = Sonamu.storage;
|
|
116
|
+
expect(factory).not.toHaveBeenCalled();
|
|
117
|
+
const disk = storage.use("images");
|
|
118
|
+
expect(await disk.getUrl("photo.jpg")).toBe("https://cdn.example.com/photo.jpg");
|
|
119
|
+
expect(await disk.getSignedUrl("photo.jpg")).toBe("https://cdn.example.com/photo.jpg?signed");
|
|
120
|
+
expect(storage.use("images")).toBe(disk);
|
|
121
|
+
expect(factory).toHaveBeenCalledTimes(1);
|
|
122
|
+
await Sonamu.init(true, false);
|
|
123
|
+
expect(Sonamu.storage).toBe(storage);
|
|
124
|
+
},
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
it("설정이 없으면 기존 초기화 오류를 유지한다", async () => {
|
|
128
|
+
await Sonamu.initForTesting();
|
|
129
|
+
expect(() => Sonamu.storage).toThrow("Storage has not been initialized");
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it("init 다음 서버를 생성해도 기존 디스크 인스턴스를 유지한다", async () => {
|
|
133
|
+
const factory = configureStorage();
|
|
134
|
+
await Sonamu.init(true, false);
|
|
135
|
+
const storage = Sonamu.storage;
|
|
136
|
+
const disk = storage.use("images");
|
|
137
|
+
vi.spyOn(Sonamu, "withFastify").mockResolvedValue(undefined);
|
|
138
|
+
// 실제 listen과 프로세스 종료 훅만 격리한다.
|
|
139
|
+
Sonamu["boot"] = async () => {};
|
|
140
|
+
await Sonamu.createServer({ doSilent: true });
|
|
141
|
+
expect(Sonamu.storage).toBe(storage);
|
|
142
|
+
expect(Sonamu.storage.use("images")).toBe(disk);
|
|
143
|
+
expect(factory).toHaveBeenCalledTimes(1);
|
|
144
|
+
});
|
|
145
|
+
});
|
package/src/api/decorators.ts
CHANGED
|
@@ -15,8 +15,7 @@ import { PuriTransactionWrapper } from "../database/puri-wrapper";
|
|
|
15
15
|
import { type TransactionalOptions } from "../database/puri-wrapper";
|
|
16
16
|
import { UpsertBuilder } from "../database/upsert-builder";
|
|
17
17
|
import { convertDomainToCategory } from "../logger/category";
|
|
18
|
-
import { type
|
|
19
|
-
import { type KeyGenerator } from "../storage/types";
|
|
18
|
+
import { type DiskName, type KeyGenerator } from "../storage/types";
|
|
20
19
|
import { type ApiParam, type ApiParamType } from "../types/types";
|
|
21
20
|
import { getModelNameFromClassName } from "../utils/class-name";
|
|
22
21
|
import { BaseFrameClass } from "./base-frame";
|
|
@@ -85,7 +84,7 @@ type BufferUploadOptions = {
|
|
|
85
84
|
};
|
|
86
85
|
type StreamUploadOptions = {
|
|
87
86
|
consume: "stream";
|
|
88
|
-
destination:
|
|
87
|
+
destination: DiskName;
|
|
89
88
|
keyGenerator?: KeyGenerator;
|
|
90
89
|
};
|
|
91
90
|
export type UploadDecoratorOptions = {
|